欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > python读写文件的三种做法

python读写文件的三种做法

2025/4/19 4:24:20 来源:https://blog.csdn.net/xiaoCCD/article/details/144834122  浏览:    关键词:python读写文件的三种做法

对于文件操作,python提供了3种做法:open(), os.open() 和with open()语句。

1. open()函数:一般用于更高级的文件读写操作,即人能读懂的用法,如果是写入数据,可用传入字符串。

用法:open(path, mode) 以给定的路径和模式去打开文件,返回一个文件对象。

mode参数有:

模式可做操作若文件不存在是否覆盖
r只读error-
r+读写errorT
w只写createT
w+读写createT
a只写createF,尾部追加写
a+读写createF,尾部追加写
wb只写二进制字符串,写入bytescreT
rb只读二进制字符串,返回byteserror-

举例:

f = open('dt.txt', 'r')print(f.read())输出:
hello, world!ifu mark. hello test.

如果文件不存在,则会报IOError

读取文件时,注意字符集的设置。如果文件本身编码为gbk时,直接读取会报错

UnicodeDecodeError: 'gbk' codec can't decode byte 0xbd in position 30: illegal multibyte sequence

这时需要将文件编码设置为encoding='utf-8', 这样再读取文件就不会报错了。
 

f = open('tes.txt', 'r', encoding='utf-8')
print(f.read())输出:
hello, world!ifu mark. hello test.
长江黄河都源远流长。

关闭文件:使用open()函数必须关闭文件,否则将会一直占有系统资源。但同时打开的文件数量有限,所以要及时把文件关闭。

f.close()

2. os.open(): 用于比较低级的方式去读取文件,是python的os模块提供的函数,以文件路径和模式为参数,返回文件描述符。

os.open(path, flags[,mode])

flags: 这个参数可以是以下选项,多个可用|隔开,常用的有

  • os.O_RONLY: 以只读方式打开
  • os.O_WRONLY: 以只写方式打开
  • os.O_RDWR: 以读写方式打开
  • os.O_APPEND: 以追加方式打开
  • os.O_CREAT: 创建并打开一个新文件

举例:

f = os.open('dt.txt', os.O_RDWR|os.O_CREAT)
str = '长江永远是母亲河!'
s = bytes(str)
os.write(f, s)
os.close()

注意:如果直接写入字符串,会报错a bytes-like object is required, not 'str',需要提前把字符串转成bytes才能成功写入文件。

与open()一样,os.open()也需要关闭文件,释放系统资源。

3. with open()语句:这句话实际是对open() 和 close()函数的组合。它把文件的打开和关闭集中在了一起。

举例:

with open('dt.txt', 'r', encoding='utf-8') as f1, open('tes.txt', 'r', encoding='utf-8') as f2:print(f1.read())print(f2.read())输出:
hello, world!ifu mark. hello test.
hello, world!ifu mark. hello test.
长江黄河都源远流长。

       同样:为了避免打开文件出现UnicodeDecodeError, 建议加上encoding='utf-8'这个参数。

4.异同点与最优选择:open()和os.open()函数不会自动关闭文件,而with open()语句会自动关闭文件,不会造成资源泄露的问题。

  • open()和with open()函数是进行文件读取的常见操作,尤其是对于简单的文件读和写。
  • 需要以低级别方式操作文件时,才使用os.open(),它更适用于特定的场景,如需要在文件中定位和读取特定位置的数据。
  • 在使用with open()语句读取文件时,可以在语句块中进行其他的文件操作,如写入内容或定位文件指针位置。

综上,with open()是文件操作的最佳选择,建议在需要进行文件操作时多多使用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词