本文实例讲述了Python常见读写文件操作。分享给大家供大家参考,具体如下:
读写文件是最常见的IO操作,python内置了读写文件的函数,用法和c是兼容的。
读写文件前,我们必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(文件描述),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
<强> 1,读文件强>
要以读文件的模式打开一个文件对象,使用python内置的open()函数,传入文件名和标识符:
f=开放(“t1.txt”、“r”编码=皍tf - 8”) >之前标识符‘r’表示读。
如果文件不存在,open()函数就会抛出一个IOError的那么错误,并且会给出详细的错误码和信息,告诉你文件不存在。
f=开放(“t122.txt”、“r”编码=皍tf - 8”) >之前回溯(最近的电话最后):
引用>
,文件“D:/学习/python/day14/测试。py”, 1号线,在& lt; module>
,,f=开放(“t122.txt”、“r”编码=皍tf - 8”)
FileNotFoundError (Errno 2):没有这样的文件或目录:“t122.txt”如果文件打开成功,接下来,调用读()方法可以一次性读取文件的全部内容,python把内容读取到内存,用一个str对象表示。
print (f.read ()) >之前输出:
hello world ! 引用>
最后一步调用关闭()方法关闭文件,文件使用完毕之后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限制的。
f.close () >之前开放(f=r”文件地址”,“读取方式”,编码=皍tf - 8”) >之前“r”:以只读方式
引用>
编码:读取的编码格式
f.read():一次性读取文件全部内容
f.close():关闭流
r”文件地址”:不让转义字符“\”起作用由于文件读写都有可能产生IOError,那么一旦出错,后面的f.close()就不会调用,所以,为了保证文件不管是否执行出错都能够正确的关闭文件,我们可以使用试…最后来实现。
试一试: f=(t1开放。txt”、“r”,编码=皍tf - 8”) print (f.read ()) 最后: 如果f: f.close () >之前但是每次都这么写实在太繁琐,所以,引入了与语句来自动帮我们调用关闭()方法:
张开(“t1。txt”、“r”,编码=皍tf - 8”) f: print (f.read ()) >之前这和前面的尝试…最后是一样的,但是代码更加简洁,并且不必调用f.close()方法。
注意:使用<代码>阅读()代码>会一次性读取文件的全部内容,如果你的文件特别大,比如说有5克,那么你的内存就爆了,所以,为了保险起见,我们可以反复调用<代码>阅读(大小)代码>方法,每次最多读取大小个字节内容,另外调用<代码> readline() 代码>可以每次读取一行内容,调用<代码> readline() 代码>一次性读取所有的内容,并按行返回列表,因此,要根据需要决定怎么调用。
如果文件很小,阅读()一次读取最方便,如果不能确定文件大小,反复调用读(大小)比较保险,如果是配置文件,调用readline()最方便。
线的f.readlines (): #把末尾的“\ n”删掉 print (line.strip ()) >之前<强> 2,二进制文件强>
前面讲的默认都是读取文本文件,并且是utf - 8编码的文本文件,要读取二进制文件,比如图片,视频等等,用“rb”模式打开文件即可:
f=开放(“tigle.jpg”、“rb”) print (f.read ()) b \ xff \ xd8 \ xff \ xe1 \ x00 \ x18Exif \ x00 \ x00……“#十六进制表示的字节 >之前<强> 3,字符编码强>
要读取非utf - 8编码的文本文件,需要给开放()函数传入编码参数,例如,读取GBK编码的文件:
Python常见读写文件操作实例总结【文本,json、csv、pdf等】