当前位置: 首页 > news >正文

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

# 【1】文件路径 绝对路径、相对路径(相对路径./可以省略)
# 【2】读取文件
import jsontry: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 jsontry: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开发者的基本功。通过本文介绍的技术,你可以安全、高效地进行各种文件操作,并优雅地处理可能出现的异常情况。记住,良好的异常处理习惯不仅能防止程序崩溃,还能提供更友好的用户体验和更有效的调试信息。

相关文章:

  • 日语学习-日语知识点小记-进阶-JLPT-真题训练-N2阶段(5):2022年12月2023年7月
  • 全新大模型开源,腾讯(int4能打DeepSeek) Vs 谷歌(2GB运行多模态)
  • Gemini-CLI:谷歌开源的命令行AI工具,重新定义开发者工作流
  • MyBatis批量删除
  • HMAC 流程
  • 矩阵的逆 线性代数
  • 代码部落 20250629 CSP-S复赛 模拟赛
  • NV064NV065美光固态闪存NV067NV076
  • java-类和面向对象的一些注意事项
  • 手机射频功放测试学习(二)——手机线性功放的静态电流和小信号(S-Parameter)测试
  • 灵动小组件:个性化手机美化,便捷通知管理
  • JDK自带的HttpClient,替代Apache的更优解?
  • MySQL锁机制全解析
  • 1 Studying《Computer Vision: Algorithms and Applications 2nd Edition》6-10
  • spring-ai-alibaba 1.0.0.2 学习(三)——配置
  • 野生动物检测数据集介绍-5,138张图片 野生动物保护监测 智能狩猎相机系统 生态研究与调查
  • Wpf布局之DockPanel面板!
  • vue计算属性
  • 六边形软件架构模式(Architecture Pattern)
  • WPF两种绑定方式的分析