python操作文件

Posted 我是一个快乐的小op

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()  关闭文件

 

以上是关于python操作文件的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记:python3,代码片段(2017)

常用python日期日志获取内容循环的代码片段

VSCode自定义代码片段——git命令操作一个完整流程

使用 Python 代码片段编写 LaTeX 文档

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程