Python入门第6课:文件操作之读写文本、CSV与JSON文件
作者: 蛋皮
标签: Python, 文件操作, 读写文件, 文本文件, CSV, JSON
在掌握了Python的基础语法、数据结构和函数之后,你的程序已经能够处理内存中的数据。但现实世界的数据通常存储在文件中。无论是用户的配置信息、日志记录、数据集还是网页内容,学会如何与文件交互是编程中不可或缺的技能。今天,我们将系统地学习Python中的文件操作,涵盖最常见的文本文件、CSV文件和JSON文件的读写方法。
为什么需要文件操作?
- 持久化数据: 程序运行结束后,内存中的数据会丢失。文件可以将数据长期保存在硬盘上。
- 数据交换: 程序之间、程序与用户之间可以通过文件共享数据(如配置文件、数据导出/导入)。
- 处理外部数据: 读取日志文件、分析数据集、抓取网页内容等都需要文件操作。
1. 基础:文本文件的读写
文本文件(如 .txt
)是最简单的文件类型,内容由字符组成。
核心概念:文件对象与上下文管理器
在Python中,我们通过 open()
函数打开文件,它会返回一个文件对象。操作完成后,必须使用 close()
方法关闭文件,以释放系统资源。
然而,更推荐、更安全的方式是使用 with
语句(上下文管理器)。它能确保无论操作成功与否,文件都会被自动、正确地关闭。
打开模式 (mode)
open()
函数的 mode
参数决定了文件的打开方式:
'r'
: 读取 (Read) - 默认模式。文件必须存在。'w'
: 写入 (Write) - 如果文件存在,内容会被覆盖;如果不存在,会创建新文件。'a'
: 追加 (Append) - 写入内容会添加到文件末尾。如果文件不存在,会创建新文件。'r+'
: 读取和写入。'w+'
: 写入和读取(覆盖模式)。'a+'
: 追加和读取。'b'
: 二进制模式 - 通常与其他模式结合,如'rb'
,'wb'
,用于处理非文本文件(如图片、音频)。
读取文本文件
# 方法1:使用 with 语句 (推荐)
filename = "example.txt"try:with open(filename, 'r', encoding='utf-8') as file:# 读取整个文件内容content = file.read()print("整个文件内容:")print(content)# 或者逐行读取 (适用于大文件)# file.seek(0) # 如果之前用过 read(), 需要重置文件指针到开头# print("\n逐行读取:")# for line in file:# print(line.strip()) # strip() 去除行尾的换行符except FileNotFoundError:print(f"文件 {filename} 未找到!")
except IOError:print(f"读取文件 {filename} 时发生错误!")
写入文本文件
filename = "output.txt"
content_to_write = "这是要写入文件的第一行。\n"
more_content = "这是第二行。\n"try:# 'w' 模式:覆盖写入with open(filename, 'w', encoding='utf-8') as file:file.write(content_to_write) # 写入字符串file.write(more_content)# 'a' 模式:追加写入with open(filename, 'a', encoding='utf-8') as file:file.write("这是追加的第三行。\n")print(f"内容已成功写入 {filename}")except IOError:print(f"写入文件 {filename} 时发生错误!"