Python文件读写方法详解
1. 文件基础概念
在Python中,文件读写是通过内置的`open()`函数实现的。文件操作需要指定文件路径、操作模式等参数。文件操作完成后必须关闭文件以释放资源,推荐使用`with`语句自动管理文件资源。
2. 基本文件操作步骤
2.1. 1. 打开文件
使用`open()`函数打开文件,语法为:
file_object = open(file_path, mode, encoding=None)
参数说明:
• `file_path`:文件路径(绝对路径或相对路径)
• `mode`:打开模式(详见下表)
• `encoding`:编码格式(文本文件必需,如`'utf-8'`)
常用文件打开模式:
| 模式 | 描述 |
|------|------|
| 'r' | 只读(默认) |
| 'w' | 写入(覆盖已有文件) |
| 'a' | 追加(在文件末尾写入) |
| 'r+' | 读写(文件必须存在) |
| 'b' | 二进制模式(可与其它模式组合) |
| 't' | 文本模式(默认) |
2.2. 2. 读取文件内容
三种常用读取方法:
# 读取整个文件为字符串
content = file_object.read()
# 读取一行
line = file_object.readline()
# 读取所有行到列表
lines = file_object.readlines()
2.3. 3. 写入文件内容
# 写入字符串
file_object.write("Hello, Python!")
# 写入字符串列表
file_object.writelines(["Line 1\n", "Line 2\n"])
2.4. 4. 关闭文件
file_object.close()
(使用`with`语句时可省略此步骤)
3. 完整代码示例
3.1. 文本文件读写
# 写入文本文件
with open('example.txt', 'w', encoding='utf-8') as f:
f.write("第一行\n")
f.write("第二行\n")
lines = ["第三行\n", "第四行\n"]
f.writelines(lines)
# 读取文本文件
with open('example.txt', 'r', encoding='utf-8') as f:
# 方法1:读取整个内容
print("整个内容:")
print(f.read())
# 重置文件指针到开头
f.seek(0)
# 方法2:逐行读取
print("\n逐行读取:")
for line in f:
print(line, end='') # 去除自动添加的换行符
3.2. 二进制文件读写
# 写入二进制文件
data = b'\x00\x01\x02\x03\x04' # 字节串
with open('binary.bin', 'wb') as f:
f.write(data)
# 读取二进制文件
with open('binary.bin', 'rb') as f:
binary_data = f.read()
print("二进制数据:", binary_data)
print("十六进制表示:", binary_data.hex())
3.3. 文件指针操作
# 文件指针演示
with open('example.txt', 'r+', encoding='utf-8') as f:
# 获取当前位置
print("初始位置:", f.tell())
# 读取5个字符
content = f.read(5)
print("读取内容:", content)
print("当前位置:", f.tell())
# 移动到文件开头
f.seek(0)
print("回到开头:", f.tell())
# 写入新内容(会覆盖原有内容)
f.write("替换")
f.seek(0)
print("修改后内容:", f.read())
3.4. 文件和目录操作
import os
# 检查文件是否存在
if os.path.exists('example.txt'):
print("文件存在")
# 获取文件信息
file_info = os.stat('example.txt')
print(f"文件大小: {file_info.st_size} 字节")
print(f"最后修改时间: {file_info.st_mtime}")
# 重命名文件
os.rename('example.txt', 'renamed.txt')
# 删除文件
os.remove('renamed.txt')
# 创建目录
os.makedirs('data', exist_ok=True)
# 列出目录内容
print("目录内容:", os.listdir('.'))
3.5. 处理常见异常
try:
with open('nonexistent.txt', 'r') as f:
content = f.read()
except FileNotFoundError:
print("错误:文件不存在!")
except PermissionError:
print("错误:没有文件访问权限!")
except IOError as e:
print(f"IO错误: {e}")
4. 最佳实践
• 始终使用`with`语句处理文件,确保资源正确释放
• 明确指定编码格式(如`utf-8`)处理文本文件
• 使用二进制模式处理非文本文件(图片、视频等)
• 大文件处理时优先使用逐行读取或分块读取
• 检查文件操作返回状态(如`write()`返回写入的字节数)
• 操作前验证文件/目录存在性(`os.path.exists()`)
5. 总结
Python的文件操作通过内置`open()`函数实现,支持文本和二进制两种模式。关键操作包括:
• 使用`with`语句自动管理文件资源
• 文本操作需指定编码(通常为UTF-8)
• 二进制文件使用`'rb'/'wb'`模式
• 文件指针通过`seek()`和`tell()`控制
• `os`模块提供文件系统操作功能
• 健壮的代码应包含异常处理
掌握这些基础方法可以满足大多数文件处理需求,对于复杂操作可进一步探索`pathlib`模块或`io`类的高级功能。







