当前位置: 首页 > 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开发者的基本功。通过本文介绍的技术,你可以安全、高效地进行各种文件操作,并优雅地处理可能出现的异常情况。记住,良好的异常处理习惯不仅能防止程序崩溃,还能提供更友好的用户体验和更有效的调试信息。

http://www.lqws.cn/news/575371.html

相关文章:

  • MySQL-复合查询
  • 推荐几本关于网络安全的书
  • 暴力风扇方案介绍
  • 【学习】《算法图解》第八章学习笔记:平衡树
  • docker的离线安装
  • [数论](a % MOD + b % MOD) % MOD = (a + b) % MOD
  • 【系统分析师】高分论文:论软件开发模型及应用
  • 引入的js文件里有过引用vue,在外侧仍需再写一次吗
  • 【C++】C++的虚析构函数
  • leetcode437-路径总和III
  • 【Flask开发】嘿马文学web完整flask项目第2篇:2.用户认证,Json Web Token(JWT)【附代码文档】
  • 桌面小屏幕实战课程:DesktopScreen 17 HTTPS
  • 熟悉 PyCharm
  • Tomcat服务概述
  • 用户行为序列建模(篇六)-【阿里】DSIN
  • Python爬虫-爬取汽车之家全部汽车品牌及车型数据
  • Linux下基于C++11的socket网络编程(基础)个人总结版
  • 应用层网络编程范式
  • 现代 JavaScript (ES6+) 入门到实战(五):告别回调地狱,Promise 完全入门
  • Origin绘制复合子母饼状图—复合柱饼图、复合环饼图及复合饼图
  • 爬虫实战之图片及人物信息爬取
  • 【IQA技术专题】大模型视觉强化学习IQA:Q-Insight
  • 数据同步工具对比:Canal、DataX与Flink CDC
  • 第二届 Parloo杯 应急响应学习——畸形的爱
  • Mybatis的修改(update)操作
  • 【Linux庖丁解牛】— 文件系统!
  • cJSON 使用方法详解
  • 浅谈AI大模型-MCP
  • 机器学习在智能电网中的应用:负荷预测与能源管理
  • Nginx漏洞处理指南