PyQt5批量修改文件名称

我们在对多个文件进行编号时,逐个修改文件名称会很繁琐,所以针对这个问题,带领大家使用PyQt5制作一个批量修改文件名称的小程序,并让大家充分学习!

将我们要批量改名的文件放在一个文件夹中,改名时我们选择对应的文件夹,在下面输入新的文件名字,点击开始改名,即可修改成功(成功后将弹窗提示修改成功,并告知修改了多少个文件,和文件名)

注意:只修改文件的前缀,后缀不会修改!不同类型的文件可以放在一起改名!

新建窗口控件,设置Layout布局在窗口里 

class BatchRenameApp(QWidget):
    def __init__(self):
        super().__init__()

        # 设置主窗口标题和大小
        self.setWindowTitle('文件批量改名工具')
        self.setGeometry(100, 100, 400, 200)

        # 创建垂直布局
        self.layout = QVBoxLayout()

        # 创建选择文件夹的标签
        self.label_folder = QLabel('选择文件夹:')
        self.layout.addWidget(self.label_folder)

        # 创建用于显示文件夹路径的文本框
        self.folder_path = QLineEdit()
        self.layout.addWidget(self.folder_path)

        # 创建浏览按钮,点击后弹出文件夹选择对话框
        self.browse_button = QPushButton('浏览')
        self.browse_button.clicked.connect(self.browse_folder)
        self.layout.addWidget(self.browse_button)

        # 创建新文件名前缀的标签
        self.label_prefix = QLabel('新文件名前缀:')
        self.layout.addWidget(self.label_prefix)

        # 创建用于输入新文件名前缀的文本框
        self.prefix_input = QLineEdit()
        self.layout.addWidget(self.prefix_input)

        # 创建开始改名按钮,点击后调用 batch_rename 方法
        self.rename_button = QPushButton('开始改名')
        self.rename_button.clicked.connect(self.batch_rename)
        self.layout.addWidget(self.rename_button)

        # 设置窗口布局
        self.setLayout(self.layout)

browse_folder 方法用于处理点击浏览按钮时的操作 

def browse_folder(self):
    # 打开文件夹选择对话框,获取选择的文件夹路径
    folder_path = QFileDialog.getExistingDirectory(self, '选择文件夹')
    
    # 如果用户选择了文件夹,将文件夹路径显示在文本框中
    if folder_path:
        self.folder_path.setText(folder_path)

 batch_rename方法执行修改文件名

def batch_rename(self):
    # 获取文件夹路径和新文件名前缀
    folder_path = self.folder_path.text()
    prefix = self.prefix_input.text()

    # 检查文件夹路径和前缀是否为空
    if not folder_path or not prefix:
        return

    try:
        # 获取文件夹中所有文件的列表
        file_list = os.listdir(folder_path)

        # 遍历文件列表,批量改名
        for count, filename in enumerate(file_list):
            file_extension = os.path.splitext(filename)[1]
            new_filename = f"{prefix}_{count + 1}{file_extension}"

            # 检查新文件名是否已存在,如果存在则添加序号
            while os.path.exists(os.path.join(folder_path, new_filename)):
                count += 1
                new_filename = f"{prefix}_{count + 1}{file_extension}"

            old_filepath = os.path.join(folder_path, filename)
            new_filepath = os.path.join(folder_path, new_filename)
            os.rename(old_filepath, new_filepath)

        # 弹出成功消息框
        QMessageBox.information(self, '成功', f'批量改名完成!\n共修改:{count}文件...\n文件名为:{prefix}')

    except Exception as e:
        # 弹出错误消息框
        QMessageBox.Critical(self, '错误', f'批量改名错误!\n错误信息:{e}')
  1. folder_path = self.folder_path.text()prefix = self.prefix_input.text():这两行代码分别获取用户在文件夹路径和新文件名前缀输入框中输入的文本。

  2. if not folder_path or not prefix::这个条件检查文件夹路径和前缀是否为空,如果有任一为空,则返回,不执行批量改名操作。

  3. file_list = os.listdir(folder_path):使用os.listdir获取文件夹中所有文件的列表。

  4. for count, filename in enumerate(file_list)::使用enumerate遍历文件列表,其中count是序号,filename是文件名。

  5. file_extension = os.path.splitext(filename)[1]:使用os.path.splitext获取文件扩展名。

  6. new_filename = f"{prefix}_{count + 1}{file_extension}":构造新的文件名,包含前缀、序号和原始扩展名。

  7. while os.path.exists(os.path.join(folder_path, new_filename))::检查新文件名是否已存在,如果存在则在文件名后面添加序号,确保新文件名唯一。

  8. old_filepath = os.path.join(folder_path, filename)new_filepath = os.path.join(folder_path, new_filename):构造旧文件路径和新文件路径。

  9. os.rename(old_filepath, new_filepath):使用os.rename对文件进行重命名。

  10. 弹出成功或错误消息框:根据操作的成功与否,使用QMessageBox.informationQMessageBox.Critical弹出相应的消息框。

  11. if __name__ == "__main__":
        # 创建一个应用程序对象
        app = QApplication([])
    
        # 创建 BatchRenameApp 类的实例,即主窗口
        window = BatchRenameApp()
    
        # 显示主窗口
        window.show()
    
        # 启动应用程序的主事件循环
        app.exec_()
    

    完整代码(需要的朋友直接cv即可)

  12. import os
    from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QFileDialog, QMessageBox
    
    
    class BatchRenameApp(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('文件批量改名工具')
            self.setGeometry(100, 100, 400, 200)
    
            self.layout = QVBoxLayout()
    
            self.label_folder = QLabel('选择文件夹:')
            self.layout.addWidget(self.label_folder)
    
            self.folder_path = QLineEdit()
            self.layout.addWidget(self.folder_path)
    
            self.browse_button = QPushButton('浏览')
            self.browse_button.clicked.connect(self.browse_folder)
            self.layout.addWidget(self.browse_button)
    
            self.label_prefix = QLabel('新文件名前缀:')
            self.layout.addWidget(self.label_prefix)
    
            self.prefix_input = QLineEdit()
            self.layout.addWidget(self.prefix_input)
    
            self.rename_button = QPushButton('开始改名')
            self.rename_button.clicked.connect(self.batch_rename)
            self.layout.addWidget(self.rename_button)
    
            self.setLayout(self.layout)
    
        def browse_folder(self):
            folder_path = QFileDialog.getExistingDirectory(self, '选择文件夹')
            if folder_path:
                self.folder_path.setText(folder_path)
    
        def batch_rename(self):
            folder_path = self.folder_path.text()
            prefix = self.prefix_input.text()
    
            if not folder_path or not prefix:
                return
    
            try:
                # 获取文件夹中所有文件的列表
                file_list = os.listdir(folder_path)
    
                # 遍历文件列表,批量改名
                for count, filename in enumerate(file_list):
                    file_extension = os.path.splitext(filename)[1]
                    new_filename = f"{prefix}_{count + 1}{file_extension}"
    
                    # 检查新文件名是否已存在,如果存在则添加序号
                    while os.path.exists(os.path.join(folder_path, new_filename)):
                        count += 1
                        new_filename = f"{prefix}_{count + 1}{file_extension}"
    
                    old_filepath = os.path.join(folder_path, filename)
                    new_filepath = os.path.join(folder_path, new_filename)
                    os.rename(old_filepath, new_filepath)
    
                QMessageBox.information(self, '成功', f'批量改名完成!\n共修改:{count}文件...\n文件名为:{prefix}')
    
            except Exception as e:
                QMessageBox.Critical(self, '错误', f'批量改名错误!\n错误信息:{e}')
    
    if __name__ == "__main__":
        app = QApplication([])
        window = BatchRenameApp()
        window.show()
        app.exec_()
    

    本期的PyQt的程序案例就分享到这了!后期会更新更多PyQt的程序!感谢支持!有什么想看的程序在评论区留言!

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

RMB Player

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

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

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

打赏作者

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

抵扣说明:

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

余额充值