📂 Python文件操作完全指南:从基础到高级技巧

文件操作是Python编程中最实用的技能之一。无论是读取配置文件、处理日志数据,还是批量处理文件,掌握文件操作都能让你的程序更加强大。本文将从基础到高级,全面介绍Python文件操作的各种技巧。

一、基础文件操作

1.1 打开和关闭文件

Python使用内置的 open() 函数来打开文件:

# 基础打开方式
file = open('data.txt', 'r', encoding='utf-8')
content = file.read()
file.close()  # 必须关闭文件

# 推荐:使用 with 语句(自动关闭)
with open('data.txt', 'r', encoding='utf-8') as file:
    content = file.read()
# 文件自动关闭,无需手动调用 close()

1.2 文件打开模式

模式说明
'r' 只读(默认)
'w' 写入(覆盖原有内容)
'a' 追加(在末尾添加)
'x' 独占创建(文件存在则报错)
'b' 二进制模式(如 'rb', 'wb')
'+' 读写模式(如 'r+', 'w+')

二、读取文件内容

2.1 不同读取方式

# 读取整个文件
with open('data.txt', 'r', encoding='utf-8') as f:
    content = f.read()  # 返回字符串

# 逐行读取(推荐大文件使用)
with open('data.txt', 'r', encoding='utf-8') as f:
    for line in f:
        print(line.strip())  # strip() 去除换行符

# 读取为列表
with open('data.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()  # 每行作为列表的一个元素

2.2 读取指定字节数

with open('data.txt', 'r', encoding='utf-8') as f:
    chunk = f.read(1024)  # 读取1024个字符
    while chunk:
        print(chunk)
        chunk = f.read(1024)  # 继续读取

三、写入文件

3.1 基本写入操作

# 写入字符串(覆盖模式)
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write('Hello, Python!\n')
    f.write('第二行内容\n')

# 追加内容
with open('output.txt', 'a', encoding='utf-8') as f:
    f.write('追加的内容\n')

# 写入多行
lines = ['第一行\n', '第二行\n', '第三行\n']
with open('output.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)

四、高级文件操作

4.1 文件和目录操作(os 和 pathlib)

import os
from pathlib import Path

# 检查文件是否存在
print(os.path.exists('data.txt'))
print(Path('data.txt').exists())

# 获取文件大小
size = os.path.getsize('data.txt')

# 创建目录
os.makedirs('new_folder', exist_ok=True)
Path('new_folder').mkdir(parents=True, exist_ok=True)

# 列出目录内容
files = os.listdir('.')
files = [f for f in os.listdir('.') if f.endswith('.txt')]

# 重命名和删除
os.rename('old.txt', 'new.txt')
os.remove('file.txt')  # 删除文件
os.rmdir('empty_folder')  # 删除空目录

4.2 批量处理文件

import os
import glob

# 使用 glob 匹配文件
py_files = glob.glob('*.py')
all_txt = glob.glob('**/*.txt', recursive=True)  # 递归搜索

# 批量重命名
for i, filename in enumerate(os.listdir('.')):
    if filename.endswith('.txt'):
        new_name = f'data_{i:03d}.txt'
        os.rename(filename, new_name)

# 批量读取处理
for filepath in glob.glob('data/*.txt'):
    with open(filepath, 'r', encoding='utf-8') as f:
        process_data(f.read())

4.3 临时文件

import tempfile

# 创建临时文件
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False) as f:
    f.write('临时数据')
    temp_path = f.name
    print(f'临时文件: {temp_path}')

# 创建临时目录
temp_dir = tempfile.mkdtemp()
print(f'临时目录: {temp_dir}')

五、CSV 和 JSON 文件

5.1 CSV 文件处理

import csv

# 读取 CSV
with open('data.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)  # 每行是列表

# 读取为字典
with open('data.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row['name'])  # 通过列名访问

# 写入 CSV
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['姓名', '年龄', '城市'])
    writer.writerows(data_list)

5.2 JSON 文件处理

import json

# 读取 JSON
with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)  # 转为 Python 对象

# 写入 JSON
with open('output.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

六、文件操作最佳实践

  1. 始终使用 with 语句:确保文件正确关闭,避免资源泄漏
  2. 指定编码:使用 encoding='utf-8' 避免中文乱码
  3. 处理异常:使用 try-except 捕获文件不存在等错误
  4. 大文件处理:逐行读取,避免一次性加载到内存
  5. 路径处理:使用 pathlib 或 os.path.join 处理跨平台路径
try:
    with open('data.txt', 'r', encoding='utf-8') as f:
        content = f.read()
except FileNotFoundError:
    print('文件不存在!')
except PermissionError:
    print('没有权限读取文件!')
except Exception as e:
    print(f'读取错误: {e}')

总结

Python的文件操作简单而强大。掌握 with 语句、不同读取方式、路径操作和常见格式(CSV/JSON)处理,你就能应对绝大多数文件操作需求。记住:安全处理文件(异常处理、正确关闭)和高效处理(大文件逐行读取)同样重要!

本文内容由 AI 生成,如有错误欢迎指正。

posted @ 2026-03-23 01:23  码小小小仙  阅读(1)  评论(0)    收藏  举报