Python 文件与文件操作详解:打开、读、写、追加、异常处理一步到位

在实际开发过程中,文件操作是 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() 函数、读写模式、异常处理等内容,你就可以轻松应对各种文件处理任务。

如果你觉得本文对你有帮助,欢迎点赞收藏,也欢迎在评论区交流你遇到的文件操作问题~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值