看了好多帖子,写的程序很乱,不便使用,故写此程序。
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('..')) # (注意修改里面的工作路径 ‘..’ )改变当前的工作目录,避免复制的地址有重复。