当前位置:首页>python>Python文件操作与异常处理:让程序更健壮

Python文件操作与异常处理:让程序更健壮

  • 2026-08-27 05:51:18
Python文件操作与异常处理:让程序更健壮

程序运行中难免遇到各种意外:文件不存在、网络断开、用户输入了乱七八糟的数据。

这一章学两件大事:文件读写和异常处理。学完之后,你的程序不再会因为一点小问题就崩溃崩溃再崩溃。


01 读取文件:with open 是最佳实践

Python读取文件非常简单:

with open('pi_digits.txt') as file_object:
    contents = file_object.read()
print(contents.rstrip())

几个关键点:

  • open('pi_digits.txt')打开文件,返回一个文件对象
  • with关键字确保文件在使用完毕后自动关闭,不需要手动调用close()
  • .read()读取文件全部内容,作为字符串返回
  • .rstrip()删除末尾多余的空行(read()会在末尾返回一个空字符)

文件路径:相对路径和绝对路径

# 相对路径:程序所在目录的子目录
with open('text_files/filename.txt') as file_object:

# 绝对路径:完整路径
with open('C:/Users/晓晓老公/Documents/pi_digits.txt') as file_object:

Windows系统用反斜杠\,Linux/Mac用正斜杠/。


02 逐行读取

一次性读取适合小文件,大文件建议逐行处理:

filename = 'pi_digits.txt'
with open(filename) as file_object:
    for line in file_object:
        print(line.rstrip())

03 写入文件:write()

filename = 'programming.txt'
with open(filename, 'w') as file_object:
    file_object.write("I love programming.")

open()的第二个参数指定模式:

模式 含义
'r' 读取(默认)
'w' 写入(会覆盖原有内容)
'a' 追加(在末尾添加)
'r+' 读写

注意:写入模式'w'如果文件已存在,会清空原有内容再写入。


04 异常处理:try/except

程序运行中如果出错,Python会抛出异常。不想让程序崩溃,就用try/except捕获:

try:
    print(10 / 0)
except ZeroDivisionError:
    print("不能除以零!")

没有try/except,10/0会直接让程序崩溃并抛出ZeroDivisionError traceback。加了try/except后,程序可以优雅地处理错误。

异常时仍然执行清理代码:finally

try:
    # 可能出错的代码
    f = open('somefile.txt')
except FileNotFoundError:
    print("文件不存在")
else:
    # 没出错时才执行
    print(f.read())
finally:
    # 不管出错还是没出错,都会执行
    print("程序结束")

05 json:保存用户数据

程序关闭后数据就丢了?用json把数据存到文件里:

import json

# 保存数据
numbers = [2, 3, 5, 7, 11, 13]
filename = 'numbers.json'
with open(filename, 'w') as f:
    json.dump(numbers, f)

# 读取数据
with open(filename) as f:
    saved_numbers = json.load(f)
print(saved_numbers)  # [2, 3, 5, 7, 11, 13]

json.dump()存,json.load()取。数据以JSON格式存储,是纯文本,人类可读。


06 实际应用:用户输入记忆

一个最简单的"记住用户名"程序:

import json

username = input("请输入你的名字: ")

# 保存
with open('username.json', 'w') as f:
    json.dump(username, f)
    print(f"已记住你的名字:{username}")

# 下次运行时读取
try:
    with open('username.json') as f:
        saved_name = json.load(f)
        print(f"欢迎回来,{saved_name}!")
except FileNotFoundError:
    print("还没有保存过名字")

本章小结

知识点 核心用法
with open() 打开文件,自动关闭
.read() 读取全部内容
.write() 写入文件,模式'w'覆盖,'a'追加
try/except 捕获异常,防止程序崩溃
json.dump() 保存数据到文件
json.load() 从文件读取数据

📌 下一章预告

代码写完了,怎么保证它是对的?

第11章「测试代码」,教我们用Python内置的unittest模块编写自动化测试。每修改一次代码,跑一遍测试用例,就能确认没有破坏原有功能。这是专业开发者的必备技能,也是让代码长期保持可靠的秘诀。

觉得有用的话,欢迎转发给正在学Python的朋友!关注公众号:Bug与灵光,一起系统学编程,下章见!

最新文章

随机文章