打开文件
使用open函数,语法格式为:open( name[, mode[, buffering]]),name为打开文件名,mode为打开文件方式,buffering控制文件的缓冲。
mode可选,默认为只读模式,即r, 其中使用的参数有
值 | 描述 |
r | 读 |
w | 写 |
a | 文件末尾追加 |
b | 二进制模式,可添加到其他模式中 |
+ | 读/写模式,可以添加到其他模式中 |
buffering可选,0表示输入输出无缓冲; 1表示有缓冲, 使用内存来代替硬盘,只有使用flush或者close时才会更新硬盘数据;大于1表示指定缓冲区大小;小于0表示使用默认的缓冲区大小。
类文件对象中包含一些读方法和写方法以及定位光标,关闭类文件对象等方法。
read | 读取字符 |
readline | 读取一行 |
readlines | 读取整个文件的所有行并将其作为列表返回 |
write | 写入字符 |
writelines | 将字符串列表写入文件,不过程序不会增加新行,需要自己添加 |
seek | 定位光标位置, |
close | 关闭文件对象 |
注意,写文件没有writeline方法,因为可以用write方法。
关闭文件
写过的文件总是应该关闭,是因为python可能会缓存写入的数据,如果程序因为某些原因崩溃了,那么数据根本就不会写入文件。要确保文件被关闭,应该使用try/finally语句,并且在finally子句中调用close方法。
f = open('c:\file.txt')
try:
f.write('close the file')
finally:
f.close()
此外,还可以使用with语句,可以打开文件并将其赋值到变量上。之后就可以将数据写入文件。文件在语句结束后会自动关闭,即使是由于异常引起的结束也是如此。
with open('c:\file.txt') as f:
f.write('close the file')
操作文件
打开文件得打类文件对象以后就可以使用类文件对象方法进行读写操作了。
例如,f = open('file.xt', 'r') 以只读方式打开文件,然后可以str = f.read(n)表示从打开的文件中读取n个字符
循环处理文件每个字符
f = open(filename)
while True:
char = f.read(1)
if not char: break
print(char)
f.close()
循环处理文件每行
f = open(filename)
while True:
line = f.readline()
if not line:
break
print(line)
f.close()
如果文件不是很大,可以将直接读取整个文件,然后进行处理
f = open(filename)
for char in f.read():
print(char)
f.close()
f = open(filename)
for line in f.readline():
print(line)
f.close()
文件迭代器操作文件
在python中,文件对象是可以迭代的,这意味着可以直接在for循环中使用它们,从而对它们进行迭代。
f = open(filename)
for line in f:
print(line)
f.close()
sys.stdin也是可以迭代的,就像其他的文件对象一样。如果想要迭代标准输入中的所有行,可以按如下形式使用
import sys
for line in sys.stdin:
print(line)