使用python重命名并归集相同前缀的文件
写一个python脚本,将当前目录下的所有目录遍历,如果目录名存在横杠的,将最后一个横杠及其后面的字符删除,创建一个新目录,然后将旧目录下面的所有文件移动到新目录下,并将旧目录删除,如果新目录文件名重复,将最新的文件名后面加个时间戳。比如,当前目录有folder-aaa,folder-bbb,然后创建一个folder目录,同时在将folder-aaa,folder-bbb下的所有文件移动到folder目录下
import os
import shutil
import random
def generate_random_suffix():
"""生成一个随机数后缀"""
return str(random.randint(1000, 9999))
# 获取当前目录下的所有目录
directories = [d for d in os.listdir('.') if os.path.isdir(d) and '-' in d]
for dir_name in directories:
if len(dir_name.rsplit(' - ', 1)) == 1:
continue
# 找到最后一个横杠及其前面的字符作为新目录名
new_dir_name = dir_name.rsplit(' - ', 1)[0]
'''
# 如果新目录名已存在,添加随机数
if os.path.exists(new_dir_name):
random_suffix = generate_random_suffix()
new_dir_name = f"{new_dir_name}_{random_suffix}"
'''
# 创建新目录
os.makedirs(new_dir_name, exist_ok=True)
# 将旧目录下的所有文件移动到新目录下
for filename in os.listdir(dir_name):
old_file_path = os.path.join(dir_name, filename)
new_file_path = os.path.join(new_dir_name, filename)
# 如果在新目录下已存在同名文件,重命名旧文件
if os.path.exists(new_file_path):
base, extension = os.path.splitext(filename)
random_suffix = generate_random_suffix()
new_filename = f"{base}_{random_suffix}{extension}"
new_file_path = os.path.join(new_dir_name, new_filename)
# 移动文件
shutil.move(old_file_path, new_file_path)
# 删除旧目录
os.rmdir(dir_name)