python操作文件
1,python读取文件
2,python写文件
3,python操作文件的常用方法
1,python读取普通文件(文件名为text.txt)
f = open('test.txt','r') data = f.read() print data f.close()
这样就能完成文件的读取。默认情况下打开文件是读的,所以如果你是读取文件,可以不用写'r',当然这里可以写成mode='r'.
考虑到如果文件是非常大的话,比如1个G的文件,如果你直接使用read方法。这样会非常占用服务器的内存,这样就不太好。所以这个时候就可以考虑xreadlines。它不是一次性将内容加载的内存中。
只有等你使用到具体的行,才会加载的内存中。这与前面的range和xrange的原理是样的。于是乎代码更改如下:
f = open('test.txt','r') data = f.read() print data f.close()
这里的open其实是可以用file来代替的,意思是一样的。从上面的代码发现,打开文件后经过一系列操作需要f.close()将文件关闭。关闭的原因是:如果不关闭文件的话,就会占用系统的描述符,而操作系统的描述符是有限制的。当然,python的回收机制也是处理这个问题。但是毕竟自动关闭是最佳的选择。但是每次f.close比较麻烦,所以引用with open的方式,它会自动帮我们执行f.close()函数。
with open('test.txt','r') as f: for line in f.xreadliens(): print line.strip()
上述的操作都是针对普通文件的操作,如果需要操作二进制文件的话,操作文件的mode需要改为‘rb’或者‘wb’。具体可以参考如下图:
2,python写文件
with open('test.txt','w') as f: f.write('this is test')
这样就完成基本的文件写操作,但是我们这里的模式是w,那么意味着原先的内容都被清空了,在清空文件内容的前提条件下,新增加的内容。
如果你不想要原文件的内容被清空,那么你就需要将模式改为追加模式,即'a'.
with open ('test.txt','a') as f: f.write('this is test')
3,python操作文件的常用方法
读模式:
read() 一次性将内容全部读取出来,read读取是以字符为单位的,即read(3),表示读取的第3个字符。
readline() 读取文件的一行,比如打开文件后,执行f.readline()则表示读取文件的第一行,再次操作,读取文件的第二行
readlines() 读取文件的所有行,以列表的形式返回
xreadlines() 读取文件的行,返回对象,即生成器,需要使用for循环遍历
next() 读取文件的下一行
seek() 指定文件指针跳到那个位置,一般用于让指针跳到起始行开头的位置。即f.seek(0),这个是以字节为单位的。
tell() 返回指针所在的位置
写模式:
wirte() 将内容一次性写入到文件中
writelines() 文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
flush() 将修改刷新到磁盘上,一般情况下,你这边f.write写入内容。但是你没有f.close时,你写入文件的内容是暂时的缓存在内存的。除非你f.close()才会将文件刷到磁盘中,或者你使用f.flush()这个命令将内容刷新到磁盘上
close() 关闭文件