递归更改文件为windows合法名称

代码

#!/usr/bin/python3
# codding: utf-8
import datetime
import os
import random
import re
import sys

random.seed(datetime.datetime.now().microsecond)


def get_win_legal_name(file_name):
    file_name = str(file_name).strip()
    res = re.sub(r'[\\/:*?"<>|]', r'', file_name)
    if len(res) == 0:
        res = str(random.random())[2:]
    return res
    pass


def change_name_recursion(absolute_file_path):
    for file_name in os.listdir(absolute_file_path):
        t_file_ab_path = os.path.join(absolute_file_path, file_name)
        if os.path.isdir(t_file_ab_path):
            change_name_recursion(t_file_ab_path)
            pass
        new_name = get_win_legal_name(file_name)
        print("new name:", new_name, " old name:", file_name)
        if new_name != file_name:
            os.rename(os.path.join(absolute_file_path, file_name), os.path.join(absolute_file_path, new_name))
        pass
    pass

if __name__ == "__main__":
    file_name = '.' if len(sys.argv) == 1 else sys.argv[1]
    print("Rename file/directory(Recursion): ", file_name)
    change_name_recursion(os.path.join(os.getcwd(), file_name))

# Usage: python3 python3_script_name.py filename

最后更新于

这有帮助吗?