批量过滤掉文件名称里的特殊字符

171 阅读1分钟

import os
import re

exclude_file = ".DS_Store"
special_char = r'[\\/:*?\"<>|:?]'

dir_path="/Users/lixin/图书馆/极客时间/"

def rename_file_name(dir_path):
    for file_name in os.listdir(dir_path):
        if(exclude_file == file_name):
            continue

        file_path = os.path.join(dir_path,file_name)
        if True == os.path.isdir(file_path):
            rename_file_name(file_path)
        else:
            new_file_name = filterChar(file_name)
            if new_file_name != file_name:
                new_file_path = os.path.join(dir_path,new_file_name)
                os.rename(file_path,new_file_path)
        
def filterChar(old_file_name):
    new_file_name = re.sub(special_char,"_",old_file_name)
    return new_file_name
    
rename_file_name(dir_path)