批量重命名工具中raw string与input()/PySimpleGUI路径输入适配问题
批量重命名工具:PySimpleGUI集成与代码修复
核心问题澄清
你纠结的raw string问题本质是:raw string仅作为Python字符串字面量写法存在,变量存储的路径字符串不需要额外转成raw格式——用户输入或GUI选择的路径,Python会自动处理转义字符,直接使用即可,无需特殊处理。
集成PySimpleGUI实现可视化交互
用PySimpleGUI的文件夹选择组件替代手动输入路径,既避免输入错误,也解决你担心的路径处理问题。同时修复原代码中的逻辑BUG,以下是完整可运行代码:
import os import time import PySimpleGUI as sg # 替代你自定义的space模块,若已有该模块可直接保留原导入 def space(): print("\n" * 2) class Renevolution: def start(self, folder, new_prefix): start_process = time.time() file_list = os.listdir(folder) counter_folders = len(file_list) # 批量重命名逻辑 for file_name in file_list: old_path = os.path.join(folder, file_name) # 跳过文件夹(如果需要重命名文件夹可删除此判断) if os.path.isdir(old_path): counter_folders -= 1 continue # 构造新文件名:前缀 + 原文件名(可根据需求调整命名规则) new_file_name = f"{new_prefix}{file_name}" new_path = os.path.join(folder, new_file_name) os.rename(old_path, new_path) end_process = time.time() space() # 打印重命名后的文件列表 enumerate_files = 1 for file in os.listdir(folder): print(f'{enumerate_files} 文件 - {file}') enumerate_files += 1 return f'处理完成,耗时 {(end_process - start_process):.2f} 秒。\n程序结束!' # PySimpleGUI界面布局 layout = [ [sg.Text('选择目标文件夹:'), sg.FolderBrowse(key='-FOLDER-'), sg.Input(key='-FOLDER_INPUT-')], [sg.Text('输入文件名前缀:'), sg.Input(key='-PREFIX-')], [sg.Button('开始重命名'), sg.Button('退出')] ] window = sg.Window('批量重命名工具', layout) while True: event, values = window.read() if event == sg.WIN_CLOSED or event == '退出': break if event == '开始重命名': folder_path = values['-FOLDER-'] new_prefix = values['-PREFIX-'] if not folder_path or not new_prefix: sg.popup_error('请选择文件夹并输入前缀!') continue # 执行重命名 RT = Renevolution() result = RT.start(folder_path, new_prefix) sg.popup(result) window.close()
关键修改说明
- 用
os.path.join()拼接路径,避免手动拼接字符串导致的路径分隔符错误(Windows用\,Linux用/) - 修复原代码中参数与全局变量混用的问题(原
start方法误用未传入的folder_path) - 添加跳过文件夹的判断(若需要重命名文件夹可删除该逻辑)
- 用PySimpleGUI的
FolderBrowse组件实现可视化目录选择,彻底避免手动输入路径的麻烦 - 修复文件计数与遍历逻辑的错误,现在能正确统计并显示重命名后的文件
内容的提问来源于stack exchange,提问作者Sérgio Lima
相关产品推荐
相关产品推荐

