根据记事本提供的内容,自动更改文件名

查看 19|回复 0
作者:luxingyu329   
网友求助帖子:根据记事本提供的内容,自动更改文件名
链接:求根据记事本提供的内容,自动更名的软件 - 吾爱破解 - 52pojie.cn
其实求助者提供的网盘内的书表是一个CSV文件,如果用CSV格式就不会出现书名中逗号分隔的错误了
代码分5个部分:
main()方法主要是获取目录信息并调用相关方法进行处理
processing_data() 方法主要是对文本文件的内容进行处理
rename_files()方法为改名的方法
filter_special_symbol()方法主要处理文件名有特殊符号报错。
create_files()方法为创建一批文件进行测试
直接上代码:
"""
Date:2024/11/5 16:29
File : readTxtFile.py
"""
import os.path
import re
def filter_special_symbol(file):
    """
    把不能作为文件名的特殊符号替换成下划线
    :param file: 待判断文件名
    :return:     不包含不能作为文件名的特殊符号的文件名
    """
    r_str = r"[\/\\\:\*\?\"\\|]"  # '/ \ : * ? "  |'
    new_title = re.sub(r_str, "_", file)  # 替换为下划线
    return new_title
def create_files(item, root_path):
    """
    创建一批文件
    :param item: 包含文件名的字典
    :param root_path: 创建路径
    :return: None
    """
    if not os.path.exists(root_path):
        os.mkdir(root_path)
    for i in item.keys():
        with open(fr"{root_path}\{i}.txt", 'w', encoding='utf-8') as f:
            f.write(item)
def processing_data(file_path):
    """
    对书表进行处理
    :param file_path: 书表的目录
    :return: 返回一个key为原文件名 value为新文件名 的字典
    """
    item = {}
    with open(file_path, 'r', encoding='utf-8') as f:
        for line in f:
            try:
                if line.split(",")[3].isdigit():
                    item[line.split(",")[3]] = f"2024_{line.split(",")[2]}_{line.split(",")[4]}"
                else:
                    item[line.split(",")[4]] = f"2024_{line.split(",")[2]},{line.split(",")[3]}_{line.split(",")[5]}"
            except Exception as e:
                print(f"{line.strip()} ---> {e}")
    return item
def rename_files(item, root_path):
    """
    重命名模块
    :param item: key为原文件名 value为新文件名 的字典
    :param root_path: 文件的所在目录
    :return: None
    """
    for file in os.listdir(root_path):
        file_key = os.path.splitext(file)[0]
        if not file_key.isdigit():
            continue
        src_file_path = os.path.join(root_path, file)
        src_file_name = os.path.splitext(file)[0]
        new_file_name = filter_special_symbol(item.get(file_key))
        new_file_path = src_file_path.replace(src_file_name, new_file_name)
        if new_file_name:
            try:
                os.rename(src_file_path, new_file_path)
            except Exception as e:
                print(e)
        else:
            print(f"出错~~~{file}")
def main():
    """
    启动
    :file_path  书表文件路径
    :root_folder  待改名文件目录
    :return: None
    """
    file_path = input("请输入书表的文件路径:")
    root_folder = input("请输入待改名的目录:")
    if os.path.exists(root_folder) and os.path.exists(file_path):
        # 获取文件的目录
        # print(root_folder)
        # 处理数据
        res = processing_data(file_path)
        # print(len(res), res)
        # 创建一批文件
        # create_files(res, root_folder)
        # 重命名文件
        rename_files(res, root_folder)
if __name__ == '__main__':
    main()

文件名, 文件

您需要登录后才可以回帖 登录 | 立即注册

返回顶部