File类型是python内置类型。使用内置函数open可以得到一个file object.
1.常用的file操作清单:
2.open files
打开文件:
打开文件,需要制定操作模式。默认模式是只读的。
模式'r', 表示打开文件并读里面内容
模式‘w',表示创建或打开文件,向文件里面写内容。(注意会覆盖原有内容)
模式’a',表示'a'打开并在文件末尾附加内容。
符号’b',加一个b,表示允许二进制数据
符号‘+’,加一个‘+’号,表示既可以读也可以写。
读写内容:
所有往python中写的内容都必须是string类型。
在使用读写操作时,使用整行读写将比一般读写要快很多。建议使用。
所有读到的数据都是string类型。所以即使存储的时int类型,读出来也是string类型了。如果要使用int类型。则需强制转换。
关闭文件:
使用close()函数关闭文件,但是这不是必须的。当file object没有被引用时,系统进行清理时会自动关闭它。当然使用close()是一个好的习惯。
3.文件操作举例
读操作:
>>> myfile = open('F:/Project/python/testfile.txt', 'r')
>>> myfile.readline()
'Hello, My name is testfile.\n'
>>> myfile.readline()
'Happy to see you!'
>>> myfile.readline()
''
>>> myfile.read()
''
>>> myfile.seek(0)
>>> myfile.read()
'Hello, My name is testfile.\nHappy to see you!'
>>> myfile.c
>>> myfile.close()
写操作:
>>> myfile = open('F:/Project/python/testfile.txt', 'w')
>>> myfile.writelines('hello')
>>> myfile.writelines('testfile')
>>> myfile.read()
>>> myfile.close()
>>> myfile = open('F:/Project/python/testfile.txt', 'r')
>>> myfile.read()
'hellotestfile'
>>> myfile.close()
4.保存object---pickle函数
之前讲过eval。但是这个函数太强大,给它足够的权限,甚至可以删除你系统里所有的文件。所以对于不确定是否安全的文件,想把它记录的东西加载进来,可以使用pickle函数。
比如,下面是保存字典的例子:
>>> D = {'a':1, 'b':2}
>>> myfile = open('F:/Project/python/testfile.txt', 'wb')
>>> import pickle
>>> pickle.dump(D, myfile)
>>> myfile.close()
从文件中将object读到内存里:
>>> myfile = open('F:/Project/python/testfile.txt', 'rb')
>>> E = pickle.load(myfile)
>>> E
{'a': 1, 'b': 2}
可以在文件中存储多个object,然后通过pickle一一读出。
>>> pickle.load(myfile)
[1, 2, 3]
>>> pickle.load(myfile)
{'a': 1, 'b': 2}
>>> pickle.load(myfile)
{'a': 1, 'b': 2}
>>> pickle.load(myfile)
Traceback (most recent call last):
File "<pyshell#87>", line 1, in <module>
pickle.load(myfile)
File "C:\Python27\lib\pickle.py", line 1378, in load
return Unpickler(file).load()
File "C:\Python27\lib\pickle.py", line 858, in load
dispatch[key](self)
File "C:\Python27\lib\pickle.py", line 880, in load_eof
raise EOFError
EOFError
>>>
与pickle相关的还有shelve函数。有兴趣可以去了解。这边不再介绍。
5.打包二进制数据
用‘wb'模式打开数据后,可以使用pack函数打包变量。
下面代码里的'>i4sh'告诉pack函数,pack的是4字节的整数,4个字符和2字节的整数。
>>> myfile = open('F:/Project/python/testfile.txt', 'wb')
>>> import struct
>>> data = struct.pack('>i4sh', 7, 'spam', 8)
>>> data
'\x00\x00\x00\x07spam\x00\x08'
>>> myfile.write(data)
>>> myfile.close()
>>>
>>> myfile = open('F:/Project/python/testfile.txt', 'rb')
>>> data = myfile.read()
>>> values = struct.unpack('>i4sh', data)
>>> values
(7, 'spam', 8)
由于打包二进制操作偏向底层,这里也不展开讲,有兴趣可以查阅官方文档。
6.文件上下文管理
这方面涉及很多没有讲过的知识,以后章节会讲解到。
end.