#!/usr/bin/python

#Python3 文件

from urllib import request
import pprint,pickle
'''
读和写文件
open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode)
    filename:filename 变量是一个包含了你要访问的文件名称的字符串值。
    mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")   #w' 只用于写 (如果存在同名文件则将被删除)
file.write("hello world!\n how are you? do you miss me?")
file.close()

'''
文件对象的方法
f.read()为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")   #windows路径下的反斜杠需要转义~只要\\就好, linux就不转义,就/不转义
content = file.read()
print(content)
file.close()

#f.readline() 会从文件中读取单独的一行。换行符为 '\n'。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
content = file.readline()
print(content)
file.close()

'''
f.readlines() 将返回该文件中包含的所有行。
如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
content = file.readlines()
print(content)
file.close()

#另一种方式是迭代一个文件对象然后读取每行: 这个方法很简单, 但是并没有提供一个很好的控制。 因为两者的处理机制不同, 最好不要混用。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "r")
for line in file:
    print(line, end = "\n")
file.close()

#f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("i love you!")
print("num = ", num)
file.close()

#如果要写入一些不是字符串的东西, 那么将需要先进行转换:
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
tup1 = ("good", 666)
content = str(tup1)
num = file.write(content)
print("num = ", num)
file.close()

'''
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.seek()如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
    seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
    seek(x,1) : 表示从当前位置往后移动x个字符
    seek(-x,2):表示从文件的结尾往前移动x个字符
from_what 值为默认为0,即文件开头。
'''
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("123456789")
print("num = ", num)
location = file.seek(5)
print("location = ", location)
location = file.seek(2, 0)
print("location = ", location)
file.close()    
    
'''
f.close(),在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。
而且写起来也比 try - finally 语句块要简短:
'''
#方法一
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
num = file.write("123456789")
file.close()
#方法二
'''
with open("D:\\hejing\\桌面\\python\\test\\text.txt", "w") as file
file.write("123456789")
print("file.closed : ", file.closed)
'''

'''
 python的pickle模块实现了基本的数据序列和反序列化。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本接口:pickle.dump(obj, file, [,protocol])
有了 pickle 这个对象, 就能对 file 以读取的形式打开:
x = pickle.load(file)
'''
data1 = {"name":"zhangsan", "age":18, "sex":"boy", "loves":["apple", "pear", "banana"]}
data2 = [1,2,3,4,5,6]
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "wb")
pickle.dump(data1, file)
pickle.dump(data2, file)
file.close()

file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "rb")
data1 = pickle.load(file)
data2 = pickle.load(file)
print("data1 = ", data1, "  #######data2 = ", data2)
file.close()

#文件写入也可以进行网站爬虫
response = request.urlopen("http://www.baidu.com")
file = open("D:\\hejing\\桌面\\python\\test\\text.txt", "w")
file.write(str(response.read()))
file.close()

python系列十四:Python3 文件的更多相关文章

  1. python系列十:python3函数

    #!/usr/bin/python #-*-coding:gbk-*- '''函数的简单规则:    函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ().    任何传入参数和自变量必 ...

  2. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  3. struts2官方 中文教程 系列十四:主题Theme

    介绍 当您使用一个Struts 2标签时,例如 <s:select ..../>  在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...

  4. 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘

    孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...

  5. 孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式

    孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系 ...

  6. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  7. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

  8. python第二十九课——文件读写(复制文件)

    自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb ...

  9. python第二十九课——文件读写(读取读取中文字符)

    演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱 ...

随机推荐

  1. oracle data file header replace(測)

    SQL> create tablespace rm_tbs datafile 'f1.dbf' size 10m; Tablespace created. SQL> select file ...

  2. oracle常用函数使用大全 Oracle除法(转)

    http://blog.csdn.net/chenmeng2192089/article/details/9155625 一.运算符算术运算符:+ - * / 可以在select 语句中使用连接运算符 ...

  3. ps -ef/ps -aux 查看正在活动的进程

    ps -ef 查看正在活动的进程 ps -ef |grep abc 查看含有"abc"的活动进程 ps -ef |grep -v abc 查看不含abc的活动进程 1)ps a 显 ...

  4. Android自定义Toast

    1.http://www.cnblogs.com/salam/archive/2010/11/10/1873654.html 2.

  5. cygwin开发环境搭建与apt-cyg的应用

    1.Cygwin安装 http://www.cygwin.com/下载安装工具 详细安装过程參照http://jingyan.baidu.com/article/6b97984d83dfe51ca2b ...

  6. unity, 对于Debug.Log输出的log,可以双击定位到代码

    unity, 对于Debug.Log输出的log,可以双击定位到代码

  7. Atitit.收银机小票打印功能的设计  java php c#.net版本

    Atitit.收银机小票打印功能的设计  java php c#.net版本 1. 1. 打印方式有4种:1 1.1. 1.1. 一是不经过任何修改,直接调用javascript中的window.pr ...

  8. 没有博士学位,照样玩转TensorFlow深度学习

    教程 | 没有博士学位,照样玩转TensorFlow深度学习 机器之心2017-01-24 12:32:22 程序设计 谷歌 操作系统 阅读(362)评论(0) 选自Codelabs 机器之心编译 参 ...

  9. Xamarin for VS 3.11.1594 Stable版免费完整破解补丁

    Xamarin for VS 3.11.1594 Stable版免费完整破解补丁 此版本只能用于3.11.1594版本破解, 其他版本可能会有错误. Android和IOS完整支持,不像某些破解只支持 ...

  10. Jenkins安装和配置系列(阳光温暖了心情)

    转自:http://www.cnblogs.com/yangxia-test/category/668771.html Jenkins学习一:Jenkins是什么? Jenkins学习二:Jenkin ...