当前位置:首页 > Python > 正文

Python文件操作完全指南:打开、读取和写入文件 | Python编程教程

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语句安全操作文件
  • 实际应用示例
  • 最佳实践和错误处理

现在开始实践这些技能,让文件操作成为你的编程利器!

发表评论