python对文件的处理是很强大的
打开文件:
open
f = open(r'C:\test\something.txt') #windows 下
还可以提供模式参数,来说明读和写
f = open(url,model)
值 描述
'r' 读模式
'w' 写模式(会清空原文件)
'a' 追写模式(在原文件后面追写)
'b' 二进制模式(可添加到其他模式中)
'+' 读/写模式(可添加到其他模式中)
‘b’模式改变处理文件的方法,一般来说,对于文本文件,并不需要,而处理其它类型的文件,如声音或图像,应该在模式参数中添加‘b’
文件读:
read
read方法读取文件,默认是一个个的去读,但也可以带参数,读指定个字符,会改变文件流,已读取的会被删除
readline
readline方法是一行行去读,默认参数读取到换行符为止,使用参数时同read函数。会改变文件流,已读取的会被删除。
reandlines
readlines方法是一行行去读,返回一个列表,每行作为一个元素。会改变文件流,已读取的会被删除。
文件写:
write
调用f.write(string)时,所提供的参数string会被追加到文件已存在部分的后面,没有writeline方法
writelines
对比readlines方法,和它相反。注意不会增加新行,需要自己添加
#-----------------------创建文本
f = open('eple.txt','w')
f.write('hello world!\n')
f.write('By eple')
f.close()
#-----------------------对比read, readline, reandlines,这几个函数都会改变f
def process(str):
print 'Processing: ',str
f = open('eple.txt')
# str = f.readline()
# strs = f.readlines()
#-----------------------按字输出
char = f.read(1)
while char:
process(char)
char = f.read(1)
f.close()
''' 效果同上'''
for char in f.read():
process(char)
f.close()
''' 效果同上 '''
for char in f.readline():
process(char)
f.close()
#-----------------------按行输出
#-----------------------文件过大时,readlines太占内存,可以用readline用代替
char = f.readline()
while char:
process(char)
char = f.readline()
f.close()
''' 效果同上 '''
for char in f.readlines():
process(char)
f.close()
文件关闭:
每次处理完文件之后,一定要记住用
close
方法关闭文件
文件迭代:
参考上面的代码。
但是对非常大的文件对象进行操作的时候,readlines会占用太多内存,可以用while循环和readline方法代替。但是我们总是推荐用for循环。所以我们也可以
import fileinput
for line in fileinput.input('eple.txt'):
process(line)
最推荐,最最优雅的迭代方法:
for line in f:
process(line)
f.close()因为文件对象本身就是可迭代的