python 实现 整个文件夹 或者 文件 的复制

看了好多帖子,写的程序很乱,不便使用,故写此程序。

import datetime
import os
import shutil
from tqdm import tqdm

# #########################   创建要保存的文件夹    #######################################################################
path = './Documents_for_each_test/'
curr_time = datetime.datetime.now()  # 获取当前的时间
time_str = datetime.datetime.strftime(curr_time, '%Y_%m_%d_%H_%M_%S')  # 将当前的时间格式化 2023_01_06_11_13_05
save_path = os.path.join(path, time_str + '_data')     # 按照时间在目录中 创建 子目录
########################################################################################################################
source_path_dict = {
            'source_path1': './out/',
            'source_path2': './VOCdevkit/',
            'source_path3': './data_train.txt',
            'source_path4': './data_val.txt',
            'source_path5': './cut_img_info.txt'
}    # 要复制的源文件(文件目录,文件都可)

for source_path_key, source_path in tqdm(source_path_dict.items()):
    if os.path.isdir(source_path):      # 如果源文件是文件夹
        dir_save_path = os.path.join(save_path, source_path)   # source_path 是创建子文件夹(因为复制文件夹 不 复制源文件夹目录)
        shutil.copytree(source_path, dir_save_path)  # 复制整个文件夹到另一个文件夹,如果保存的地址文件夹save_path已经存在,则会报错
    elif os.path.isfile(source_path):
        file_save_path = save_path
        shutil.copy(source_path, file_save_path)  # 复制文件到另一个文件夹
print('done!')

如果要移动文件,将程序中的 shutil.copy 改为 shutil.move 

另外,使用shutil.copytree 时,如果两次复制有重复路径时会报错,也就是复制到同一文件夹的源文件地址不能有重复的,我在运行的时候,它报错是因为mkdir()创建相同的文件夹,所以就出错!解决办法:使用 os.chdir(os.path.abspath('..'))         # (注意修改里面的工作路径 ‘..’ )改变当前的工作目录,避免复制的地址有重复。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值