在实际开发过程中,文件操作是 Python 中最常见的基础功能之一。无论是处理日志文件、读取配置文件,还是保存程序输出,掌握文件的读写技巧都至关重要。
本文将从最基础的文件打开与读取方式讲起,逐步深入讲解文本与二进制文件处理、常用文件操作方法以及文件异常处理与编码问题。适合初学者打基础,也可供有经验的开发者查漏补缺。
一、文件的打开
1.基本语法:
在 Python 中,使用内置的 open() 函数打开文件,其基本语法如下:
open(file, mode='r', encoding=None)
2.参数说明
file:要打开的文件路径(字符串类型)
mode:打开模式,常用如下:
'r':读取(默认)
'w':写入,文件不存在则创建,存在则清空
'a':追加写入
'b':以二进制模式操作(可与 r, w, a 联用,如 'rb')
'+':读写模式(如 'r+', 'w+')
encoding:文本模式下的编码格式(如 utf-8, gbk)
其实在python中,内置open函数中还有其他的可修改参数,如erro=None,newline=None,closed=True等,这些参数都被赋了默认值,一般不需要修改,上面三个参数是常用到可能需要人为设定的,读者如果对其他参数感兴趣,可以查询相关资料或者在pycharm中输入help(open)查看
示例:读取文件内容:
f = open('example.txt', 'r', encoding='utf-8')
content = f.read()
print(content)
f.close()
推荐写法:使用 with 上下文管理器
with 语法可以自动关闭文件,避免遗忘 close() 导致资源泄露。
with open('example.txt', 'r', encoding='utf-8') as f:#as...意为取别名为...
content = f.read()
print(content)
二、读取文件的多种方式
Python 提供多种方式读取文件内容:
1. 一次性读取整个内容
with open('data.txt', 'r', encoding='utf-8') as f:
content = f.read()
2. 逐行读取(适合大文件)
with open('data.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.strip())
3. 使用 readline() 和 readlines()
# 读取一行
line = f.readline()# 读取所有行,返回列表
lines = f.readlines()
三、写入与追加文件内容
1.写入(覆盖模式)
with open('output.txt', 'w', encoding='utf-8') as f:
f.write("Hello, Python!\n")
⚠️ 注意:w 模式会清空原文件内容
2.追加写入
with open('output.txt', 'a', encoding='utf-8') as f:
f.write("This is an additional line.\n")
追加写入模式(a模式)下,文件原本的内容会被保留,后面写入的内容被写在原文件内容之后
四、操作二进制文件(如图片、视频)
1.读取图片数据(以二进制形式)
with open('image.jpg', 'rb') as f:
data = f.read()
2.写入二进制文件
with open('copy.jpg', 'wb') as f:
f.write(data)
六、常见编码问题与解决方案
1.问:为什么会出现编码错误?
答:文件是以某种编码方式(如 UTF-8、GBK)存储的,若读取或写入时使用了不同编码,会报错或乱码
2.问:如何避免?
答:明确指定 encoding 参数,尤其是在读取中文内容时
with open('chinese.txt', 'r', encoding='utf-8') as f:
print(f.read())
七、异常处理:避免程序崩溃
推荐将文件操作放入 try...except 块中,确保程序健壮性:
try:
with open('nonexistent.txt', 'r', encoding='utf-8') as f:
print(f.read())
except FileNotFoundError:
print("文件不存在!")
except UnicodeDecodeError:
print("文件编码错误!")
八、实际案例:复制文本文件内容
def copy_text_file(src_path, dest_path):
try:
with open(src_path, 'r', encoding='utf-8') as src:
content = src.read()
with open(dest_path, 'w', encoding='utf-8') as dest:
dest.write(content)
print("复制成功!")
except Exception as e:
print(f"复制失败:{e}")copy_text_file('source.txt', 'backup.txt')
九、总结
Python 的文件操作虽然简单,但使用得好可以让你的程序更稳定、更优雅。通过熟练掌握 open() 函数、读写模式、异常处理等内容,你就可以轻松应对各种文件处理任务。
如果你觉得本文对你有帮助,欢迎点赞收藏,也欢迎在评论区交流你遇到的文件操作问题~