吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1017|回复: 4
收起左侧

[Python 原创] 根据记事本提供的内容,自动更改文件名

[复制链接]
luxingyu329 发表于 2024-11-5 17:04

网友求助帖子:根据记事本提供的内容,自动更改文件名

链接:求根据记事本提供的内容,自动更名的软件 - 吾爱破解 - 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[i])

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()

免费评分

参与人数 7吾爱币 +11 热心值 +5 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
laozhang4201 + 1 + 1 我很赞同!
xlln + 1 + 1 我很赞同!
wkdxz + 2 我很赞同!
matrixzpc + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
bluewatercom + 1 + 1 热心回复!
汝此多娇 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

dork 发表于 2024-11-6 08:48
for line in f:也仅仅是用第一行当作文件名,本以为是AI自动提炼出文章内容为文件名。。。。。。
wkdxz 发表于 2024-11-6 09:20
laotzudao0 发表于 2024-11-6 10:42
WHANHAO003 发表于 2024-11-7 08:42
看不懂我还以为是ai提取内容自动生成
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 11:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表