PYTHON从入门到实践10-文件操作与异常

发布于:2025-06-30 ⋅ 阅读:(17) ⋅ 点赞:(0)
# 【1】文件路径 绝对路径、相对路径(相对路径./可以省略)
# 【2】读取文件
import json

try:
    with open("1.txt", 'r', encoding='utf-8') as f:
        print(f.read().strip())
except Exception as e:
    print("文件不存在", e)
    # 【3】写入文件
try:
    with open("1.txt", 'w', encoding='utf-8') as f:
        f.write("\n床前明月光,疑是地上霜。\n举头望明月,低头思故乡。\n")
except Exception as e:
    print(f"保存备份文件失败: {str(e)}")

try:
    with open("1.txt", 'r', encoding='utf-8') as f:
        print(f.read().strip())
except Exception as e:
    print("文件不存在", e)
# json的方式读取和存储
try:
    with open("2.txt", 'r', encoding='utf-8') as f:
        read_res = str(json.loads(f.read().strip()))
        print("读取的结果为:" + read_res)
except Exception as e:
    print("文件不存在", e)

try:
    with open("2.txt", 'w', encoding='utf-8') as f:
        temp_json = [
            {"name": "张三"},
            {"name": "李四"},
        ]
        f.write(json.dumps(temp_json, ensure_ascii=False))
except Exception as e:
    print(f"保存备份文件失败: {str(e)}")
# 【3】异常 try except
try:
    i = 2 / 0
except Exception as e:
    print(f"计算发生错误:{str(e)}")

一、文件路径:绝对路径与相对路径

在Python文件操作中,理解文件路径是第一步。文件路径主要分为两种类型:

  1. 绝对路径:从根目录开始的完整路径,如C:\Users\Name\file.txt(Windows)或/home/name/file.txt(Linux/Mac)

  2. 相对路径:相对于当前工作目录的路径

    • ./file.txt - 当前目录下的文件(./可以省略)

    • ../file.txt - 上级目录下的文件

    • subdir/file.txt - 当前目录子文件夹中的文件

python

复制

下载

# 使用相对路径打开文件(省略./)
with open("1.txt", 'r', encoding='utf-8') as f:
    content = f.read()

二、文件读取与写入操作

1. 基本文件操作

Python使用open()函数进行文件操作,基本模式包括:

  • 'r':读取(默认)

  • 'w':写入(会覆盖现有内容)

  • 'a':追加

  • 'x':独占创建

  • 'b':二进制模式

  • '+':读写模式

安全读取文件的推荐做法

python

复制

下载

try:
    with open("1.txt", 'r', encoding='utf-8') as f:
        print(f.read().strip())  # strip()移除首尾空白字符
except Exception as e:
    print("文件不存在", e)

写入文件示例

python

复制

下载

try:
    with open("1.txt", 'w', encoding='utf-8') as f:
        f.write("\n床前明月光,疑是地上霜。\n举头望明月,低头思故乡。\n")
except Exception as e:
    print(f"保存文件失败: {str(e)}")

2. 使用上下文管理器(with语句)

with语句会自动处理文件的打开和关闭,即使在操作过程中发生异常也能确保文件被正确关闭,这是最推荐的文件操作方式。

三、JSON文件处理

Python内置的json模块可以方便地处理JSON数据。

JSON读取

python

复制

下载

import json

try:
    with open("2.txt", 'r', encoding='utf-8') as f:
        data = json.loads(f.read().strip())
        print("读取的结果为:" + str(data))
except Exception as e:
    print("文件不存在", e)

JSON写入

python

复制

下载

try:
    with open("2.txt", 'w', encoding='utf-8') as f:
        temp_json = [
            {"name": "张三"},
            {"name": "李四"},
        ]
        json.dump(temp_json, f, ensure_ascii=False)  # 直接写入文件
        # 或者使用json.dumps() + f.write()
except Exception as e:
    print(f"保存JSON文件失败: {str(e)}")

关键参数说明:

  • ensure_ascii=False:确保中文字符正常显示而不是Unicode转义

  • indent=4:美化输出,增加缩进(可选)

四、异常处理机制

Python使用try-except块处理异常,这是编写健壮代码的关键。

基本异常处理

python

复制

下载

try:
    i = 2 / 0  # 这会引发ZeroDivisionError
except Exception as e:
    print(f"计算发生错误:{str(e)}")

更完整的异常处理结构

python

复制

下载

try:
    # 尝试执行的代码
    with open("data.txt", 'r') as f:
        data = f.read()
except FileNotFoundError:
    print("文件未找到,请检查路径")
except PermissionError:
    print("没有文件访问权限")
except Exception as e:
    print(f"发生未知错误: {str(e)}")
else:
    print("文件读取成功!")
finally:
    print("操作完成,无论成功与否都会执行")

五、最佳实践与常见问题

  1. 编码问题:总是明确指定文件编码(推荐UTF-8)

  2. 资源管理:始终使用with语句自动管理文件资源

  3. 异常处理:针对不同异常类型分别处理,不要笼统捕获所有异常

  4. 文件存在检查:操作前可用os.path.exists()检查,但注意竞态条件

  5. 大文件处理:对于大文件,使用逐行读取或分块读取

python

复制

下载

# 大文件处理示例
with open('large_file.txt', 'r', encoding='utf-8') as f:
    for line in f:  # 逐行读取,内存友好
        process_line(line)

结语

掌握Python文件操作和异常处理是每个Python开发者的基本功。通过本文介绍的技术,你可以安全、高效地进行各种文件操作,并优雅地处理可能出现的异常情况。记住,良好的异常处理习惯不仅能防止程序崩溃,还能提供更友好的用户体验和更有效的调试信息。


网站公告

今日签到

点亮在社区的每一天
去签到