Python中file()与open()区别两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open
操作基本一样,此处以file来演示
r 读
w 写
a 追加
r+ 读写
w+ 写读 (会先丢失文件)
rb 处理win文件(传网络文件)
f = file('test.txt','w')
f.write('The is a day1\n')
f.write('The is a day2\n')
f.write('The is a day3\n')
f.close() \\ 退出保存
重新打开文件会丢失内容
f = file('test.txt','w')
f.write('The is a day1 \n')
f.write('The is a day2 \n')
f.write('The is a day3 \n')
f.flush() #刷新到内存
读
f = file('test.txt','r') #不加r,默认会是r
f.read() #读文件
f.readline() #一行一行的读
f.readlines() #读剩下所有行,以列表形式显示
f.tell() #查看到多少个字节
f.seek(0) #指定到第0个字节
追加
f = file('test.txt','a')
f.write('This a new line....')
f.flush()
f.readline()
'The is a day1\n'
>>> f.readline()
'The is a day2\n'
>>> f.readline()
'The is a day3\n'
取第一行
contents = f.read()
contents.split('\n')[0] #取第一行
contents2 = f.readlines()
contents2[0]
readlines #全部读到内存
是把文件的全部内容读到内存,并解析成一个list,当文件的体积很大的时候,需要占用很多内存,使用该方法是一种不明智的做法。
xreadlines #节约内存
一种迭代占用更小的内存,而且更加智能(依赖于Python文件对象的实现),所需文件内容是自动从buffer中按照需要读取的,是值得鼓励的做法。
文件内容替换
import fileinput,tab
for line in fileinput.input('FilePath',inplace=1):
line =line.replace('old_txt','new_txt')
print line,
改之前做备份
for line in fileinput.input('filename.txt',inplace=1,backup='.bak'):
line =line.replace('break','continue')
print line,
好处:不需要关闭,自动关闭
with open('test.txt','r') as f:
for i in f.readlines():
print i