[Python]一个文件批量重命名的小程序

001-PG001-Python001 一个文件批量重命名的小程序

本人工作上要经常参考国标,于是电脑上有很多国标的pdf,用文件夹分类放好的,大概300多个吧。
本来都是根据实际情况命名的,有的是GB有的是GB_T,排序的时候GB和GB_T是分开的,现在想要把这些合并排序,于是决定把所有的【_T】全部删掉,让他以编号排序,顺便练练python的os与os.path。
因为公司没有python环境,于是学了点tkinter搓了个简单的界面,再用pyinstaller打了个包。

直接扔代码吧,注释都在里面了。

# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import ttk
from tkinter.filedialog import askdirectory
from os import walk, rename
from os.path import join as path_join


def select_path():
    """
    选择路径函数,无返回值

    选择一个路径,并将其中所有“/”替换为“\”
    """
    _path = askdirectory()  # 调用选择路径对话框,选择路径
    path.set(_path.replace('/', '\\'))  # 默认返回路径为“/”,强迫症将其中所有“/”替换为“\”


def handle_files():
    """
    处理文件函数,无返回值

    将处理的文件加入列表,若无需处理,显示跳过;若处理,显示绿色的处理前文件名。
    """
    i = 0  # 文件序号初始化
    listbox.delete(0, tk.END)  # 清除listbox原数据
    for _root, _dirs, _files in walk(path.get()):  # 遍历文件夹下所有文件与子文件夹
        for _file in _files:  # 遍历所有文件
            i += 1  # 文件序号+1
            _full_dir = path_join(_root, _file)  # 原文件名完整路径
            if _file.find('_T') != -1:  # 如果存在“_T”
                rename(_full_dir, path_join(_root, _file.replace('_T', '')))  # 文件重命名
                listbox.insert(tk.END, '[{}]处理:{}'.format(i, _full_dir))  # 处理记录
                listbox.itemconfig(tk.END, fg='green')  # 处理记录标成绿色
            else:
                listbox.insert(tk.END, '[{}]跳过:{}'.format(i, _full_dir))  # 跳过记录
    listbox.yview(tk.END)  # 视角移到最下方


dialog = tk.Tk()
dialog.title('国标文件去除“_T”小程序')
dialog.resizable(width=False, height=False)  # 禁止调整对话框大小

path = tk.StringVar()  # 定义存储路径的变量,写入和读取分别是set()和get()方法

# 定义控件
label = ttk.Label(dialog, text='需要处理的文件夹:')
entry = ttk.Entry(dialog, width=40, textvariable=path)
button_select = ttk.Button(dialog, text='选择路径', command=select_path)
button_handle = ttk.Button(dialog, text='开始处理', command=handle_files)
scrollbar_x = ttk.Scrollbar(dialog, orient=tk.HORIZONTAL)
scrollbar_y = ttk.Scrollbar(dialog)
listbox = tk.Listbox(dialog, 
                     xscrollcommand=scrollbar_x.set, 
                     yscrollcommand=scrollbar_y.set)  # 列表绑定滚动条
scrollbar_x.config(command=listbox.xview)  # 滚动条绑定列表滚动
scrollbar_y.config(command=listbox.yview)

# 打包
label.grid(row=0, column=0)
entry.grid(row=0, column=1)
button_select.grid(row=0, column=2)
button_handle.grid(row=0, column=3)
listbox.grid(row=1, column=0, columnspan=4, sticky=tk.W+tk.E)
scrollbar_x.grid(row=2, column=0, columnspan=4, sticky=tk.W+tk.E)
scrollbar_y.grid(row=1, column=4, sticky=tk.N+tk.SE)

dialog.mainloop()

完美

(话说打包之后带到公司去会有漏文件的现象,在家里测试就没问题,不知道为啥。)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容