使用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)

原文链接:https://blog.yongit.com/note/1573046.html