我想将所有文件从2个目录复制到另一个目录,但是当文件名相同时,它们会在目标目录中复制一次(由一个目录而不是两个)。
以下是代码:
def cp_files_tmp(src, dest):#copy dir's files into a dir
src_files = os.listdir(src)
for file_name in src_files:
full_file_name = os.path.join(src, file_name)
if (os.path.isfile(full_file_name)):
shutil.copy(full_file_name, dest)
dest = 'C:/temp/'
src_A= 'C:/sil/in/'
src_B= 'C:/olw/in/'
cp_files_tmp(src_A, dest) # cp files
cp_files_tmp(src_B, dest) # cp files
答案 0 :(得分:4)
但是预期的行为是什么?如果两个文件具有相同的名称,那么复制它们只会用第二个文件覆盖第一个文件,并且它不会以不同的方式结束。您必须提出某种名称统一,例如,如果存在文件X,则将第二个X复制为X.tmp或类似的东西。
def cp_files_tmp(src, dest):
src_files = os.listdir(src)
for file_name in src_files:
full_file_name = os.path.join(src, file_name)
full_destination=os.path.join(dest,file_name)
if (os.path.isfile(full_file_name)):
while os.path.exists(full_destination):
full_destination += ".duplicate"
shutil.copy(full_file_name, full_destination)
dest = 'C:/temp/'
src_A= 'C:/sil/in/'
src_B= 'C:/olw/in/'
cp_files_tmp(src_A, dest) # cp files
cp_files_tmp(src_B, dest) # cp files
这会导致文件从C:/ sil / in和C:/ olw / in复制到C:/ temp,如果有重复,只需将结果名称更改为FILE_NAME.duplicate