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

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

作者: Roi_Rio | 来源:发表于2018-10-05 12:19 被阅读0次

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

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/zfbxaftx.html