(九)Python高级应用-文件与IO操作
概览
- 文本/二进制文件读写
- JSON/CSV/Excel数据处理
- 上下文管理器(with语句)
- 目录遍历与文件压缩
在编程世界中,输入/输出(I/O)操作是与外部环境(如文件系统、网络、数据库)进行数据交换的基石。Python 以其简洁优雅的语法,提供了一套强大而灵活的工具来处理各种 I/O 任务。本文将深入探讨 Python 在文件处理方面的高级应用,涵盖文本与二进制文件、常见数据格式的处理、关键的上下文管理器,以及目录操作与文件压缩。
1. 文本文件与二进制文件的读写
核心概念:文本 vs. 二进制
-
文本文件: 由字符序列组成,通常是人类可读的(如.txt,.py,.html)。处理文本文件时,Python 会涉及编码(如 UTF-8, GBK)和解码,将字符转换为字节序列或反之。默认编码通常是 UTF-8。
-
二进制文件: 由字节序列组成,内容依特定格式定义(如图片.jpg, 音频.mp3, 任何其他格式)。处理二进制文件时,我们直接操作字节,不进行编码转换。
基础操作:
open()函数
Python 使用内置的open()函数来创建文件对象。
file = open(filename, mode, encoding)
filename: 文件路径。
mode: 打开模式,决定了文件如何被处理。
‘r’: 只读(文本模式,默认)
‘w’: 只写。如果文件存在则清空,不存在则创建。
‘a’: 追加。将数据写入文件末尾。
‘x’: 独占创建。如果文件已存在则失败。
‘b’: 二进制模式。需与其他模式组合使用,如’rb’或’wb’。
‘t’: 文本模式(默认)。
‘+’: 更新(读写)。
代码示例与解释
文本文件读写
# 1. 写入文本文件
# 使用 'w' 模式,指定编码为 UTF-8
with open('example.txt', 'w', encoding='utf-8') as f:f.write('你好,世界!\n') # 写入一行f.writelines(['这是第二行。\n', '这是第三行。\n']) # 写入多行# 2. 读取文本文件
with open('example.txt', 'r', encoding='utf-8') as f:content = f.read() # 一次性读取全部内容print("read():\n", content)with open('example.txt', 'r', encoding='utf-8') as f:line = f.readline() # 读取一行(包括换行符)print("readline():\n", repr(line)) # 使用 repr 显示换行符with open('example.txt', 'r', encoding='utf-8') as f:lines = f.readlines() # 读取所有行,返回一个列表print("readlines():\n", lines)# 3. 高效逐行处理(推荐用于大文件)
# 文件对象本身是一个可迭代对象
with open('example.txt', 'r', encoding='utf-8') as f:for line_num, line in enumerate(f, 1):print(f"Line {line_num}</