文件读取应该比把数据写入文件更常见
readline方法可从一个文本文件中读取并返回一行文本数据,然后可以做相应的处理:
while True:
line = input.readline()
if not line:
break
process(line)
readlines方法一次读完整个文件,并返回一个各行数据的列表:
for line in input.readlines():
process(line)
这种方法只有在物理内存足够用的情况下才会很有用,如果文件十分庞大,readlines可能会失败,或者导致虚拟内存不足,操作系统会让物理内存中的数据复制到磁盘上,性能急剧降低
比较好的方法是对文件对象执行一个循环,每次取得一行并处理,这样性能和效率比较好:
for line in input:
process(line)
还可以读取文件中的一些或者所有字节,特别是在用二进制模式读取的情况下,可以用read方法。当不指定参数,read会读取并返回文件中所有剩余的字节;当read被传入一个整数参数N并调用时,它读取并返回下N个字节(或者所有剩余的字节,如果剩余的字节数少于N)。
还有seek和tell方法,支持对文件随机访问,处理包含很多固定长度记录的二进制文件很常用。