Python基本 – 文件和流
1、打开文件
open(name[,mode[,buffering]])
open函数利用一个文件名作为其独一的一个强制参数,然后返回一个文件工具。模式(mode)缓和冲区(buffering)是可选的。
模式:
'r' 读模式
'w' 写模式
'a' 追加模式
'b' 二进制模式,添加到其他模式中利用
'+' 读/写模式,添加到其他模式中利用
'+'参数可以用来任何模式后,指明读和写都是可以的。'b'模式改变处理惩罚文件的要领。
二进制模式和文本模式的区别:在利用二进制模式时,python会原样地给出文件中的内容,但文本模式下则不必然。python会在文本模式下做一些转换:当在windows下用文本模式读取文件时,python会将\r\n转换成\n,相反,当在windows下用文本模式写文件时,会把\n转换成\r\n。
缓冲:
假如参数为0,I/O就是无缓冲,所有的读写操纵直接针对硬盘。假如是1,I/O就用内存来取代硬盘,是措施更快,利用flush或close时才把内容写入硬盘。
2、读和写
f = open()
f.read(n) 读取n个字节
f.write(str)
f.close()
3、管式输出
利用管道可以在一个呼吁的后头续写其他多个呼吁,管道标记将一个呼吁的尺度输出和下一个呼吁的尺度输入连在一起。
$ cat test.txt | python somescript.py
文件流随时机见函数seek(offset),把当前位置移动到offset界说的位置。
4、读写行
file.readline(n)当n为空是,读取单唯一行,并读取文件换行符,当n为非负值时读取文件的前n个字符。
file.readlines()读取一个文件中的所有行,并以列表的返回。
file.writeline()没有此函数。
file.wirtelines()将一个字符串列表写入到字符串文件中。
5、假如想确保文件被封锁了,那么应该利用try/finally语句,而且在finally字句中挪用close()要领。
try:
file = open()
#操纵文件
finaly:
file.close()
with语句可以打开文件并将其赋值到变量上:
with open() as somefile:
do_someting(somefile)
6、对文件内容举办迭代
6.1 按字节处理惩罚,在轮回里做如下操纵
f.read(1)
6.2 按行处理惩罚,在轮回里做如下操纵
f.readline()
6.3 处理惩罚整个文件
f.read() 将文件当做一个字符串来获取
f.readlines() 将文件读入到一个字符串列表
7、利用fileinput实现懒惰行迭代
懒惰行迭代的原因:在读取很是大的文件,readlines会占用太多的内存,而懒惰行迭代只是读取文件中实际需要的部门。
import fileinput
for line in fileinput.input(filename):
process(line)
8、文件迭代器
文件工具是可以凭据行举办迭代的。
f = open(filename)
for line in f:
process(line)
f.close()
可以对文件迭代器执行和普通迭代器沟通的操纵:list(open(filename))