← 返回首页
Python3基础教程(五十)
发表时间:2022-04-19 11:28:18
文件读写

1.读文件 使用Python来读写文件是非常简单的操作. 我们使用open()函数来打开⼀个文件, 获取到文件的句柄. 然后通过文件句柄就可以进行各种各样的操作了。

注意: 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

实例:

创建test.txt文本文件

床前明月光
疑是地上霜
举头望明月
低头思故乡

在test.txt同级目录下创建file_read.py

于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally,来保证释放资源。

# -*- coding: utf-8 -*-
# @Time : 2022/4/19 11:30
# @File : file_read.py
# @Software : PyCharm

try:
    f = open('test.txt', 'r', encoding='utf-8')
    print(f.read())
finally:
    if f:
        f.close()

运行结果:

床前明月光
疑是地上霜
举头望明月
低头思故乡

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

with open('test.txt', 'r', encoding='utf-8') as f:
    print(f.read())

如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()更方便。

with open('test.txt', 'r', encoding='utf-8') as f:
    for line in f.readlines():
        # 把末尾的'\n'删掉
        print(line.strip())

上面读取的都是文本文件,并且是UTF-8编码的文本文件。要读取二进制文件,比如图片、视频等等,用'rb'模式打开文件即可。

try:
    f = open('logo.png', 'rb')
    print(f.read())
finally:
    if f:
        f.close()

2.写文件

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件。

# -*- coding: utf-8 -*-
# @Time : 2022/4/19 11:54
# @File : file_write.py
# @Software : PyCharm

with open('test.txt', 'w', encoding='utf-8') as f:
    f.write('你好, world!')

每次使用 f.write() 方法并运行代码时,之前文本内容都将被覆盖,如果我们希望追加到文件末尾怎么办?可以传入'a'以追加(append)模式写入。

with open('test.txt', 'a', encoding='utf-8') as f:
    f.write('床前明月光\n')
    f.write('疑是地上霜\n')
    f.write('举头望明月\n')
    f.write('低头思故乡\n')