读和写文件
open() 将会返回一个 file 对象
open(filename, mode)
不同模式打开文件的完全列表:https://www.runoob.com/python3/python3-inputoutput.html
简单的代码
1 f=open("exp.txt",'w')
2 f.write("hhhhhh")
3 f.close()
4 f=open("exp.txt",'w')
5 f.write('fugaighhhhhh')
6 f.close()
7 f=open("exp.txt",'a')
8 f.write('\nzhuijiahhhh')
9 f.close()
文件对象的方法
- f.read()
为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
- f.readline()
f.readline() 会从文件中读取单独的一行。换行符为 '\n'。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
- f.readlines()
f.readlines() 将返回该文件中包含的所有行。如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。
- f.write()
f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
如果要写入一些不是字符串的东西, 那么将需要先进行转换。
# 打开一个文件 f = open("/tmp/foo1.txt", "w") value = ('www.runoob.com', 14) s = str(value) f.write(s) # 关闭打开的文件 f.close()
- f.tell()
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个字符
- f.close()
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。 而且写起来也比 try - finally 语句块要简短。
>>> with open('/tmp/foo.txt', 'r') as f: ... read_data = f.read() >>> f.closed True
pickle模块
python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
基本接口:
pickle.dump(obj, file, [,protocol])
对 file 以读取的形式打开
x = pickle.load(file)
1 import pickle 2 3 # 使用pickle模块将数据对象保存到文件 4 data1 = {'a': [1, 2.0, 3, 4+6j], 5 'b': ('string', u'Unicode string'), 6 'c': None} 7 8 selfref_list = [1, 2, 3] 9 selfref_list.append(selfref_list) 10 11 output = open('data.pkl', 'wb') 12 13 # Pickle dictionary using protocol 0. 14 pickle.dump(data1, output) 15 16 # Pickle the list using the highest protocol available. 17 pickle.dump(selfref_list, output, -1) 18 19 output.close()
1 import pprint, pickle 2 3 #使用pickle模块从文件中重构python对象 4 pkl_file = open('data.pkl', 'rb') 5 6 data1 = pickle.load(pkl_file) 7 pprint.pprint(data1) 8 9 data2 = pickle.load(pkl_file) 10 pprint.pprint(data2) 11 12 pkl_file.close()
关于file对象的详细方法和参数
https://www.runoob.com/python3/python3-file-methods.html
python3 文件/目录方法
https://www.runoob.com/python3/python3-os-file-methods.html