当前位置: 首页 > 图灵资讯 > 行业资讯> 怎么用python打开文件

怎么用python打开文件

发布时间:2025-05-09 10:52:39

Python文件读写文件是最常见的IO操作。Python内置读写文件函数,用法与C兼容。

在阅读和撰写文件之前,我们必须了解操作系统提供在磁盘上阅读和撰写文件的功能。现代操作系统不允许普通程序直接操作磁盘。

python学习网,大量免费python视频教程,欢迎在线学习!

读写文件是要求操作系统打开文件对象(通常称为文件描述符),然后通过操作系统提供的接口从文件对象中读取数据(读取文件),或将数据写入文件对象(写入文件)

With 以各种方式打开open函数文件

相关推荐:Python基础教程

1.读文件

使用Python内置的open()函数,以阅读文件的模式打开文件对象,输入文件名和标记符:

f=open('/Users/michael/test.txt','r')

标示符’r就这样,我们成功地打开了一份文件。

假如文件不存在,open()函数会抛出IOError的错误,并给出错误代码和详细信息,告诉您文件不存在:

f=open('/Users/michael/notfound.txt','r')
Traceback(mostrecentcalllast):
File"<stdin>",line1,in<module>
FileNotFoundError:[Errno2]Nosuchfileordirectory:'/Users/michael/notfound.txt'

如果文件打开成功,可以通过调用read()一次读取文件的所有内容。Python将内容读取到内存中,并用str对象表示:

f.read()
'Hello,world!'

最后一步是调用close()关闭文件。文件使用后必须关闭,因为文件对象占用了操作系统的资源,操作系统同时可以打开的文件数量有限:

f.close()

因为IOError可能在文件读写时产生,一旦出错,后面的f.close()不会调用。因此,为了确保文件能够正确关闭,无论是否出错,我们都可以使用try … finally实现:

try:
f=open('/path/to/file','r')
print(f.read())
finally:
iff:
f.close()

2.使用With Open 函数打开,常见的坑

使用方法

但是每次都这么写实太麻烦了,所以Python引入with语句自动帮我们调用close()方法:

with 调用close()方法的作用是

withopen('/path/to/file','r')asf:
print(f.read())

f.read() 阅读所有文件内容

和前面的try一样...finally是一样的,但是代码更好更简单,不需要调用finally.close()方法。

调用read()会一次读取文件的所有内容,如果文件有10g,内存就会爆炸。

为了保险起见,可以反复调用read(size)方法,每次最多读size字节。例如,read(1024) 每次读取1024个字节的数据内容

调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容,并按行返回list。所以要根据需要决定如何调用。

假如文件很小,read()一次性读取最方便;如果文件大小无法确定,请反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:

forlineinf.readlines():
print(line.strip())

把末尾的‘\\n’在 strip() 目标内容line中的所有空间、空行等都可以在函数中删除,只剩下文字内容。

常见的坑

(1)如上图所示,Fold001文件夹下有一个read_file.读取hellolo的py文件.txt文件,代码如上图所示,可以正常引用。

(2)但如果引用静态文件的函数再次被其他函数调用,例如Fold002中的函数read.py调用,那么readfile()函数相当于read.Py目录执行,然后静态文件helolo.与read相比,txt与read相比.py路径,不是上图的路径,否则会报错,如下:

3.写入内容

写文件和读文件是一样的。唯一的区别是在调用open()函数时,将标识符传输到“w’或者’wb意思是写文本文件或写二进制文件:

f=open('/Users/michael/test.txt','w')
f.write('Hello,world!')
f.close()

可以反复调用write()写文件,但一定要调用f.close()关闭文件。

当我们写文件时,操作系统通常不会立即将数据写入磁盘,而是将数据放入内存中缓存,然后在业余时间慢慢写入。

只有在调用close()方法时,操作系统才能保证将所有未写入的数据写入磁盘。忘记调用close()的结果是,数据可能只写了一部分到磁盘,剩下的丢失了。因此,使用with语句获得保险:

4.With Open写入内容

withopen('/Users/michael/test.txt','w')asf:
f.write('Hello,world!')

要写入特定编码的文本文件,请将open()函数传输到encoding参数,并将字符串自动转换为指定编码

字符编码

5.打开非utf-8编码的文件

要读取非UTF-8编码的文本文件,需要将open()函数传输到encoding参数,例如,读取GBK编码的文件:

f=open('/Users/michael/gbk.txt','r',encoding='gbk')
f.read()

遇到一些编码不规范的文件,你可能会遇到Unicodecoderor,因为一些非法编码的字符可能夹杂在文本文件中。在这种情况下,open()函数还接收errors参数,表示如何处理编码错误。最简单的方法就是直接忽略:

f=open('/Users/michael/gbk.txt','r',encoding='gbk',errors='ignore')

6.打开二进制文件

上述默认情况是读取文本文件和UTF-8编码的文本文件。读取图片、视频等二进制文件,使用rb打开模式下的文件:

f=open('/Users/michael/test.jpg','rb')
f.read()
b'\xff\xd8\xffxe1\x00\x18Exif\x00\x00...'#十六进制表示字节

7.多个文件的读写操作(2种方法可供参考)

withopen('/home/xbwang/Desktop/output_measures.txt','r')asf:
withopen('/home/xbwang/Desktop/output_measures2.txt','r')asf1:
withopen('/home/xbwang/Desktop/output_output_bk.txt','r')asf2:
...
withopen('/home/xbwang/Desktop/output_measures.txt','r')asf:
...
withopen('/home/xbwang/Desktop/output_measures2.txt','r')asf1:
...
withopen('/home/xbwang/Desktop/output_output_bk.txt','r')asf2:
...

推荐阅读python文件:

上一篇学python对金融有用吗

相关文章

python3兼容python2吗

python3兼容python2吗

2025-05-09
python3 whl怎么安装

python3 whl怎么安装

2025-05-09
python 字典怎么提取value

python 字典怎么提取value

2025-05-09
python 怎样计算字符串的长度

python 怎样计算字符串的长度

2025-05-09
python 怎么样反向输出字符串

python 怎么样反向输出字符串

2025-05-09
python 怎么判断字符串开头

python 怎么判断字符串开头

2025-05-09