一个文件夹里面有很多个子文件夹,其中一些是互相配对的,比如:
动物寓言王国_合作力量大 (上)国英语版
动物寓言王国_合作力量大 (下)国英语版
动物寓言王国-狮子与猎狗 (上)-国英双语版
动物寓言王国-狮子与猎狗 (下)-国英双语版
想要把这些能够配对的子文件夹进行合并,怎么利用ChatGPT来操作呢?
在ChatGPT中输入提示词:
你是一个Python编程专家,要完成一个批量合并文件夹的任务,具体步骤如下:
打开文件夹:C:\迅雷下载\动物寓言王国\动物寓言王国;
读取里面的子文件夹;
如果2个子文件夹名称的前12个字符一致,而且一个子文件夹名称里面包含“(上)”,另外一个子文件夹名称里面包含“(下)”,那么把这两个子文件夹看作为一对子文件夹;
用子文件夹名称的前12个字符作为文件夹名称,创建一个新文件夹;
移动这一对子文件夹里面的所有文件到这个新文件夹;
文件移动完成后,删除两个子文件夹里面的所有文件;
注意:每一步都要输出相关信息;
如果一对子文件夹中有相同名称的文件,那么在移动之前进行重命名,在同样名称文件的后面加上一个字符“(1)”
源代码生成如下:
import os
import shutil
# 文件夹路径
folder_path = "C:\\迅雷下载\\动物寓言王国\\动物寓言王国"
# 子文件夹列表
subfolders = [f.name for f in os.scandir(folder_path) if f.is_dir()]
# 对子文件夹列表进行排序,以便可以按名称的前12个字符进行配对
subfolders.sort()
# 遍历所有子文件夹
i = 0
while i < len(subfolders) - 1:
# 获取子文件夹名称的前12个字符
prefix1 = subfolders[i][:12]
prefix2 = subfolders[i+1][:12]
# 检查是否是一对子文件夹
if prefix1 == prefix2 and (("(上)" in subfolders[i] and "(下)" in subfolders[i+1]) or ("(上)" in subfolders[i+1] and "(下)" in subfolders[i])):
# 创建新文件夹
new_folder_path = os.path.join(folder_path, prefix1)
if not os.path.exists(new_folder_path):
os.mkdir(new_folder_path)
print(f"创建新文件夹:{new_folder_path}")
# 移动两个子文件夹内的所有文件到新文件夹
for j in range(2):
for filename in os.listdir(os.path.join(folder_path, subfolders[i+j])):
src = os.path.join(folder_path, subfolders[i+j], filename)
dst = os.path.join(new_folder_path, filename)
# 如果文件已存在,重命名文件
if os.path.exists(dst):
filename, ext = os.path.splitext(filename)
filename += "(1)" + ext
dst = os.path.join(new_folder_path, filename)
print(f"重命名文件:{src} 到 {dst}")
shutil.move(src, dst)
print(f"移动文件:{filename} 到 {new_folder_path}")
# 删除两个子文件夹
for j in range(2):
shutil.rmtree(os.path.join(folder_path, subfolders[i+j]))
print(f"删除子文件夹:{subfolders[i+j]}")
# 跳过下一个子文件夹
i += 2
else:
i += 1
print("所有文件处理完毕。")
合并后的文件夹如下: