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

Python拷贝文件教程 - 5种简单方法详解 | Python文件操作指南

Python文件拷贝完全指南

为什么需要文件拷贝?

文件拷贝是编程中的常见操作,适用于:数据备份、文件处理、自动化脚本等场景。Python提供了多种高效的文件拷贝方法。

方法1:使用shutil模块(推荐)

import shutil

# 拷贝文件(保留元数据)
shutil.copy2('source.txt', 'backup/source_backup.txt')

# 拷贝整个目录
shutil.copytree('my_folder', 'backup_folder')

优点: 保留文件元数据、支持目录拷贝、跨平台兼容

方法2:使用文件读写操作

def copy_file(source, destination):
    with open(source, 'rb') as src, open(destination, 'wb') as dst:
        dst.write(src.read())

# 使用示例
copy_file('data.bin', 'backup/data_backup.bin')

适用场景: 需要自定义处理过程、特殊格式文件处理

方法3:处理大文件(分块读取)

def copy_large_file(src, dst, buffer_size=1024*1024):
    with open(src, 'rb') as s, open(dst, 'wb') as d:
        while True:
            chunk = s.read(buffer_size)
            if not chunk:
                break
            d.write(chunk)

# 拷贝1GB以上大文件
copy_large_file('large_video.mp4', 'backup.mp4')

常见错误处理

import shutil
import os

try:
    if not os.path.exists('backup'):
        os.makedirs('backup')
    shutil.copy('important.db', 'backup/important_backup.db')
except FileNotFoundError:
    print("错误:源文件不存在")
except PermissionError:
    print("错误:没有写入权限")
except Exception as e:
    print(f"未知错误: {str(e)}")

方法对比

方法 速度 保留元数据 适用场景
shutil.copy2() 常规文件拷贝
分块读写 中等 大文件操作

最佳实践

  • 始终检查源文件是否存在(os.path.exists())
  • 处理文件路径使用os.path.join()确保跨平台兼容
  • 大文件操作时监控内存使用
  • 重要操作添加异常处理
  • 使用shutil.copystat()保留文件属性

完整示例

import shutil
import os

def safe_copy(src, dst):
    """安全拷贝文件(自动创建目录)"""
    try:
        # 创建目标目录
        os.makedirs(os.path.dirname(dst), exist_ok=True)
        
        # 执行拷贝并保留元数据
        shutil.copy2(src, dst)
        print(f"成功拷贝: {src} -> {dst}")
        return True
    except Exception as e:
        print(f"拷贝失败: {str(e)}")
        return False

# 使用示例
safe_copy('report.xlsx', 'backup/2023/report.xlsx')

发表评论