python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python文件拷贝

python实现文件拷贝到其他目录

作者:detayun

这篇文章主要为大家详细介绍了如何使用python实现文件拷贝到其他目录,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

在Python中,可以使用标准库中的shutil模块实现文件拷贝。以下是一个完整的代码示例:

import shutil
import os

# 源文件路径
src_file = "source_folder/example.py"
# 目标目录路径
dst_dir = "target_folder"

# 检查目标目录是否存在,不存在则创建
os.makedirs(dst_dir, exist_ok=True)

# 构造目标文件路径
dst_file = os.path.join(dst_dir, os.path.basename(src_file))

try:
    # 执行拷贝操作(保留元数据)
    shutil.copy2(src_file, dst_file)
    print(f"文件已成功拷贝到:{dst_file}")
except FileNotFoundError:
    print(f"错误:源文件 {src_file} 不存在")
except PermissionError:
    print("错误:权限不足,无法写入目标目录")
except Exception as e:
    print(f"拷贝过程中发生错误:{str(e)}")

关键点说明:

扩展功能:

1.如果要批量拷贝目录下的所有.py文件:

import glob

source_dir = "source_folder"
target_dir = "target_folder"
os.makedirs(target_dir, exist_ok=True)

for py_file in glob.glob(os.path.join(source_dir, "*.py")):
    shutil.copy2(py_file, os.path.join(target_dir, os.path.basename(py_file)))

2.拷贝多个文件到新目录

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import shutil
import os
import logging

logging.basicConfig(level=logging.INFO)

base_disk_path = "D:\\"
source_paths = [
    "/files/psPayOffRequest/31bab034-6646-4ade-bc7c-e49bb2d6e6a2.jpg",
    "/files/psPayOffRequest/0857c67a-8f48-452c-8cfe-c2461c5bd498.jpg",
    "/files/psPayOffRequest/3d36e2c1-8ae1-49f1-971f-468999541975.jpg"
]

target_directory = "d:/new_directory/"

if not os.path.exists(target_directory):
    os.makedirs(target_directory)

for source_path in source_paths:
    full_source_path = os.path.join(base_disk_path, source_path.lstrip("/"))
    file_name = os.path.basename(full_source_path)
    target_path = os.path.join(target_directory, file_name)
    logging.info(f"Copying {full_source_path} to {target_path}")
    shutil.copy(full_source_path, target_path)

3.拷贝指定文件夹或文件到指定目录

import os
import shutil
 
primary_dir = r'原始文件夹'
target_dir = r'目标文件夹'
 
 
def str_change(str):
    if not 'bin' in str:
        return str
    else:
        aa, bb = str.split('bin')
        return aa + bb
 
 
def func_copy(primary_dir, target_dir):  # 拷贝方法 把原始文件夹的所有文件夹和文件 按照同样的名字拷贝到目标文件夹中
    # 遍历filepath下所有文件,包括目录
    files = os.listdir(primary_dir)
    for i in files:  # i 是目录下的文件或文件夹
        i = os.path.join(primary_dir, i)  # 字符串拼接
        i_new = os.path.join(target_dir, i)  # 目标文件夹也要改变
        if os.path.isdir(i):  # 如果是文件夹
            if not os.path.exists(i_new):  # 如果没新建过 新建同名目标文件夹
                os.makedirs(i_new)
            func_copy(i, i_new)     # 递归循环下一个目录 复制目录里面的内容
        else: # 不是文件夹 文件 判断字符串是否有_bin 粘贴到指定位置 并且修改名字
            oldname = i
            newname = str_change(i_new)
            print(oldname)
            print(newname)
            if not os.path.exists(newname): # 如果文件不存在,存在了就不拷贝了
                shutil.copyfile(oldname, newname)
 
if __name__ == '__main__':
    func_copy(primary_dir, target_dir)

注意事项:

这个方法在Windows/Linux/macOS均可使用,无需额外安装依赖库。

到此这篇关于python实现文件拷贝到其他目录的文章就介绍到这了,更多相关python文件拷贝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文