文件、JSON、CSV 与异常处理
上一篇:条件判断、循环与函数 下一篇:文本词频统计项目实战
1. 使用 Path 构造路径
1 | from pathlib import Path |
__file__:当前 Python 文件。resolve():得到绝对路径。parent:得到所在文件夹。/:拼接路径。
这种写法不依赖终端当前目录。
2. 读取和写入文本
1 | with open(file_path, "r", encoding="utf-8") as file: |
with 结束时自动关闭文件。按行读取:
1 | with open(file_path, "r", encoding="utf-8") as file: |
写入模式:
| 模式 | 含义 |
|---|---|
r |
读取 |
w |
覆盖写入 |
a |
末尾追加 |
rb |
二进制读取 |
3. JSON
JSON 适合保存字典、列表等结构化数据。
1 | import json |
ensure_ascii=False:保留中文。indent=2:使用两个空格缩进。json.dump():写入文件。json.load():从文件读取。
4. CSV
CSV 适合表格数据:
1 | import csv |
Windows Excel 打开中文 CSV 时使用 utf-8-sig 更稳妥。CSV 读取出的数字通常仍是字符串,需要时用 int() 转换。
5. 异常处理
1 | try: |
只捕获自己能够解释或处理的异常,不要直接使用空的 except: 隐藏真实问题。
主动抛出异常:
1 | def calculate_average(numbers): |
常见错误
- 相对路径错误:程序寻找的位置取决于终端当前目录。
- 输出文件夹不存在:写文件前用
path.parent.mkdir(parents=True, exist_ok=True)。 - 忘记编码:中文文本应显式指定
encoding="utf-8"。 w模式误覆盖:需要保留旧内容时使用a。
自测
json.dump()与json.load()分别做什么?- 为什么项目使用
Path(__file__).resolve().parent? - 如何在输出文件夹不存在时自动创建它?
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Mortal!