用python做一个文件批量名字修改器

前言

闲得慌,用pyqt5写的

需求

把一堆文件放在一个文件夹里面,通过正则表达式匹配特定格式的后缀文件,批量修改同类型的文件,修改为一些有规律的名字。

实例

长这样
在这里插入图片描述

直接附上代码

(1)UI部分:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'UI.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(854, 409)
        self.gridLayout_2 = QtWidgets.QGridLayout(Form)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.tabWidget = QtWidgets.QTabWidget(Form)
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.gridLayout = QtWidgets.QGridLayout(self.tab)
        self.gridLayout.setObjectName("gridLayout")
        self.line = QtWidgets.QFrame(self.tab)
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.gridLayout.addWidget(self.line, 2, 0, 1, 2)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.label_3 = QtWidgets.QLabel(self.tab)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_3.addWidget(self.label_3)
        self.lineEdit_first = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_first.setObjectName("lineEdit_first")
        self.horizontalLayout_3.addWidget(self.lineEdit_first)
        self.label_4 = QtWidgets.QLabel(self.tab)
        self.label_4.setObjectName("label_4")
        self.horizontalLayout_3.addWidget(self.label_4)
        self.lineEdit_second = QtWidgets.QLineEdit(self.tab)
        self.lineEdit_second.setObjectName("lineEdit_second")
        self.horizontalLayout_3.addWidget(self.lineEdit_second)
        self.btn_transform = QtWidgets.QPushButton(self.tab)
        self.btn_transform.setObjectName("btn_transform")
        self.horizontalLayout_3.addWidget(self.btn_transform)
        self.gridLayout.addLayout(self.horizontalLayout_3, 6, 0, 1, 2)
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.textBrowser_receive = QtWidgets.QTextBrowser(self.tab)
        self.textBrowser_receive.setObjectName("textBrowser_receive")
        self.verticalLayout.addWidget(self.textBrowser_receive)
        self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_8.addItem(spacerItem)
        self.label_9 = QtWidgets.QLabel(self.tab)
        self.label_9.setObjectName("label_9")
        self.horizontalLayout_8.addWidget(self.label_9)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_8.addItem(spacerItem1)
        self.verticalLayout.addLayout(self.horizontalLayout_8)
        self.gridLayout.addLayout(self.verticalLayout, 0, 0, 2, 1)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.btn_openFile = QtWidgets.QPushButton(self.tab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.btn_openFile.sizePolicy().hasHeightForWidth())
        self.btn_openFile.setSizePolicy(sizePolicy)
        self.btn_openFile.setObjectName("btn_openFile")
        self.horizontalLayout_2.addWidget(self.btn_openFile)
        self.label_2 = QtWidgets.QLabel(self.tab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
        self.label_2.setSizePolicy(sizePolicy)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.fontComboBox_selectFormat = QtWidgets.QFontComboBox(self.tab)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(2)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.fontComboBox_selectFormat.sizePolicy().hasHeightForWidth())
        self.fontComboBox_selectFormat.setSizePolicy(sizePolicy)
        self.fontComboBox_selectFormat.setObjectName("fontComboBox_selectFormat")
        self.horizontalLayout_2.addWidget(self.fontComboBox_selectFormat)
        self.gridLayout.addLayout(self.horizontalLayout_2, 5, 0, 1, 2)
        self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_9.setObjectName("horizontalLayout_9")
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_9.addItem(spacerItem2)
        self.label_6 = QtWidgets.QLabel(self.tab)
        self.label_6.setObjectName("label_6")
        self.horizontalLayout_9.addWidget(self.label_6)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_9.addItem(spacerItem3)
        self.gridLayout.addLayout(self.horizontalLayout_9, 1, 1, 1, 1)
        self.textBrowser_modify = QtWidgets.QTextBrowser(self.tab)
        self.textBrowser_modify.setObjectName("textBrowser_modify")
        self.gridLayout.addWidget(self.textBrowser_modify, 0, 1, 1, 1)
        self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_11.setObjectName("horizontalLayout_11")
        spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_11.addItem(spacerItem4)
        self.label_10 = QtWidgets.QLabel(self.tab)
        self.label_10.setObjectName("label_10")
        self.horizontalLayout_11.addWidget(self.label_10)
        spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_11.addItem(spacerItem5)
        self.gridLayout.addLayout(self.horizontalLayout_11, 3, 0, 1, 2)
        self.line_2 = QtWidgets.QFrame(self.tab)
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.gridLayout.addWidget(self.line_2, 4, 0, 1, 2)
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.label_7 = QtWidgets.QLabel(self.tab_2)
        self.label_7.setGeometry(QtCore.QRect(20, 24, 111, 21))
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.tab_2)
        self.label_8.setGeometry(QtCore.QRect(20, 64, 431, 31))
        self.label_8.setObjectName("label_8")
        self.tabWidget.addTab(self.tab_2, "")
        self.gridLayout_2.addWidget(self.tabWidget, 0, 0, 1, 1)

        self.retranslateUi(Form)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label_3.setText(_translate("Form", "修改名称:"))
        self.lineEdit_first.setText(_translate("Form", "这是第"))
        self.label_4.setText(_translate("Form", "i"))
        self.lineEdit_second.setText(_translate("Form", "个文件"))
        self.btn_transform.setText(_translate("Form", "开始转换"))
        self.textBrowser_receive.setHtml(_translate("Form", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
        self.label_9.setText(_translate("Form", "转换前"))
        self.btn_openFile.setText(_translate("Form", "打开文件"))
        self.label_2.setText(_translate("Form", "           文件后缀:"))
        self.label_6.setText(_translate("Form", "转换后"))
        self.label_10.setText(_translate("Form", "提示:将所有文件放在同一个文件夹中"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Form", "首页"))
        self.label_7.setText(_translate("Form", "使用需知:"))
        self.label_8.setText(_translate("Form", "该版本暂时只支持png/jpg识别,后续将会更新其他功能"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Form", "需知"))


编辑定义类:

# -*- coding: utf-8 -*-
# @Time    : 2021/4/7 00:05
# @Author  : Zeeland
# @File    : FunEdit.py
# @Software: PyCharm
from UI import Ui_Form
from PyQt5.QtWidgets import QWidget,QApplication,QFileDialog
import sys,os,re

class FunEdit(Ui_Form,QWidget):
    def __init__(self):
        super(FunEdit, self).__init__()
        self.setupUi(self)
        self.init()

    '''绑定事件'''
    def init(self):
        self.btn_openFile.clicked.connect(self.openFile)
        self.btn_transform.clicked.connect(self.transform)

    '''打开文件'''
    def openFile(self):
        self.file = QFileDialog.getExistingDirectory(self,
                                                      "选取文件夹",
                                                      "./")  # 起始路径
        self.fileList = os.listdir(self.file)
        for i in self.fileList:
            self.textBrowser_receive.append(i)


    def anayse(self):
        # self.fileList = os.listdir(r"C:\Users\86132\Desktop\here")  # 待修改文件夹
        print("修改前:" + str(self.fileList))

        currentpath = os.getcwd()  # 得到进程当前工作目录
        os.chdir(self.file)  # 将当前工作目录修改为待修改文件夹的位置
        num = 1  # 名称变量
        for fileName in self.fileList:  # 遍历文件夹中所有文件
            pat = ".+\.(jpg|png|gif)"  # 匹配文件名正则表达式
            pattern = re.findall(pat, fileName)  # 进行匹配
            m1=self.lineEdit_first.text()
            m2=self.lineEdit_second.text()
            os.rename(fileName, (m1 + str(num) + m2+"." + pattern[0]))  # 文件重新命名
            # 其中pattern[0]为后缀格式
            num = num + 1  # 改变编号,继续下一项
        print("---------------------------------------------------")
        os.chdir(currentpath)  # 改回程序运行前的工作目录
        sys.stdin.flush()  # 刷新
        self.fileList = str(os.listdir(self.file))
        print("修改后:" + self.fileList)  # 输出修改后文件夹中包含的文件

    def transform(self):
        self.anayse()
        for i in self.fileList:
            self.textBrowser_modify.append(i)


'''主方法运行入口'''
if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = FunEdit()
    win.show()
    sys.exit(app.exec())

运行效果

在这里插入图片描述
额…不知道转换后的为什么输出方式不一样了
在这里插入图片描述
但是总的来说问题不大

在这里插入图片描述

如果你感觉本文对你有帮助,记得点赞评论收藏转发哦~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeeland

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值