上一篇
Python文件操作完全指南:打开、读取和写入文件 | Python编程教程
- Python
- 2025-07-23
- 1084
Python文件操作完全指南
掌握打开、读取和写入文件的核心技巧
为什么文件操作如此重要?
文件操作是Python编程中的基础技能,无论是处理数据、配置文件还是日志记录,都离不开文件操作。掌握Python文件处理能力可以帮助你:
- 读取和处理各种数据文件(CSV、JSON、文本等)
- 保存程序运行结果和配置信息
- 实现数据持久化存储
- 处理日志文件
- 与其他程序进行数据交换
使用open()函数打开文件
Python使用内置的open()
函数来打开文件,基本语法如下:
基本语法
file_object = open(file_path, mode)
file_path
- 文件路径(相对路径或绝对路径)mode
- 打开模式(如 'r' 读取, 'w' 写入等)
文件打开模式详解
模式 | 描述 |
---|---|
'r' |
读取模式(默认) |
'w' |
写入模式(覆盖现有内容) |
'a' |
追加模式(在文件末尾添加) |
'x' |
独占创建模式(文件存在则失败) |
'b' |
二进制模式 |
't' |
文本模式(默认) |
'+' |
读写模式(与其他模式组合使用) |
读取文件内容
Python提供了多种读取文件内容的方法:
1. 读取整个文件
with open('example.txt', 'r') as file:
content = file.read()
print(content)
特点: 一次性读取所有内容,适合小文件。
2. 逐行读取
with open('example.txt', 'r') as file:
for line in file:
print(line.strip()) # 使用strip()移除行尾换行符
特点: 内存高效,适合大文件处理。
3. 读取所有行到列表
with open('example.txt', 'r') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
特点: 返回包含所有行的列表,适合需要随机访问行内容的场景。
写入文件内容
Python提供了灵活的文件写入方法:
1. 写入字符串
with open('output.txt', 'w') as file:
file.write("Hello, World!\n")
file.write("这是第二行内容\n")
注意: 'w'模式会覆盖文件原有内容!
2. 追加内容
with open('output.txt', 'a') as file:
file.write("这是追加的内容\n")
特点: 在文件末尾添加新内容,保留原有内容。
3. 写入多行
lines = ["第一行\n", "第二行\n", "第三行\n"]
with open('output.txt', 'w') as file:
file.writelines(lines)
提示: 需要自行添加换行符\n
。
使用with语句管理文件
最佳实践:始终使用with
语句处理文件
推荐方式
with open('file.txt', 'r') as file:
data = file.read()
# 文件自动关闭
优点:
- 自动处理文件关闭
- 异常安全
- 代码更简洁
传统方式(不推荐)
file = open('file.txt', 'r')
try:
data = file.read()
finally:
file.close()
缺点:
- 容易忘记关闭文件
- 代码冗余
- 异常处理复杂
实际应用示例
示例1:复制文件
def copy_file(source, destination):
with open(source, 'rb') as src, open(destination, 'wb') as dest:
dest.write(src.read())
print(f"文件已从 {source} 复制到 {destination}")
# 使用示例
copy_file('original.jpg', 'copy.jpg')
示例2:处理CSV数据
def process_csv(input_file, output_file):
with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
header = infile.readline() # 读取标题行
outfile.write(header) # 写入标题行
for line in infile:
data = line.strip().split(',')
# 假设我们要处理第二列数据(乘以2)
if len(data) >= 2:
try:
data[1] = str(float(data[1]) * 2)
except ValueError:
pass # 忽略无法转换的值
outfile.write(','.join(data) + '\n')
# 使用示例
process_csv('data.csv', 'processed_data.csv')
示例3:日志记录器
import datetime
def log_message(message, log_file='app.log'):
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
log_entry = f"[{timestamp}] {message}\n"
with open(log_file, 'a') as file:
file.write(log_entry)
print(log_entry, end='')
# 使用示例
log_message("应用程序启动")
log_message("用户登录成功", "user_activity.log")
log_message("数据处理完成")
最佳实践与常见问题
文件操作最佳实践
- 始终使用
with
语句处理文件 - 处理大文件时使用逐行读取
- 指定文件编码(特别是处理中文)
open('file.txt', 'r', encoding='utf-8')
- 处理二进制文件使用
'b'
模式 - 写入文件后使用
flush()
确保数据写入磁盘 - 使用
os.path
模块处理文件路径
常见错误与解决方案
- FileNotFoundError - 检查文件路径是否正确
- PermissionError - 确保文件未被其他程序占用
- UnicodeDecodeError - 指定正确的文件编码
- 文件内容被意外覆盖 - 检查是否错误使用了'w'模式
- 内存不足 - 大文件使用逐行读取代替read()
掌握Python文件操作
文件操作是Python编程中的基础且关键的部分。通过本教程,你已经学习了:
- 使用open()函数打开文件
- 多种文件读取和写入方法
- 使用with语句安全操作文件
- 实际应用示例
- 最佳实践和错误处理
现在开始实践这些技能,让文件操作成为你的编程利器!
本文由XuMei于2025-07-23发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20256346.html
发表评论