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()  关闭文件

 

posted @ 2017-12-28 19:54  某电商首席日志工程师  阅读(304)  评论(2编辑  收藏  举报