把几个文件夹里的文件汇总成一个文件夹,相同名称的文件在后面加序号
import os
import shutil
def copy_files_with_unique_names(source_dirs, target_dir):
os.makedirs(target_dir, exist_ok=True)
# 遍历每个源文件夹
for source_dir in source_dirs:
for filename in os.listdir(source_dir):
# 构建源文件的完整路径
source_path = os.path.join(source_dir, filename)
if os.path.isfile(source_path):
# 构建目标文件的完整路径
target_path = os.path.join(target_dir, filename)
# 检查文件是否已存在
if os.path.exists(target_path):
# 如果文件已存在,添加序号
base, ext = os.path.splitext(filename)
counter = 1
while True:
new_filename = f"{base}({counter}){ext}"
new_target_path = os.path.join(target_dir, new_filename)
if not os.path.exists(new_target_path):
target_path = new_target_path
break
counter += 1
# 复制文件
shutil.copy2(source_path, target_path)
source_dirs = [
"IMG_1765",
"IMG_1766",
"IMG_1777",
"IMG_1778",
"IMG_1779",
"IMG_1780",
"IMG_1781",
"IMG_1782",
"IMG_1783",
"IMG_1784"
]
target_dir = "集合"
copy_files_with_unique_names(source_dirs, target_dir)