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`类的高级功能。

发表回复

后才能评论