python 文件重命名工具

前几天在某歉职网站上看到个需求,但是想做却要先花费不少进行投标,不中还不退还,吃相好难看,现将源码发在这里,供有需求的免费使用。(支持任何文件的重命名)

PS.本人接兼职开发,有需要的可联系我

 主代码:file_rename.py其中help_info.py为img2py生成的代码,自行替换即可

import os

import openpyxl
import wx
import wx.adv
import help_info
from openpyxl.utils import column_index_from_string
from mainform import Root


def run_rename():
    file_path = frm.m_text_file.GetValue()
    print(file_path)
    if file_path:
        wb = openpyxl.load_workbook(file_path, data_only=True)
        ws = wb.active

        # 定义需要用到的变量的默认值
        old_name_column = frm.m_text_old_column.GetValue()
        new_name_column = frm.m_text_new_column.GetValue()
        path = frm.m_text_path.GetValue()
        start_row = 1
        end_row = ws.max_row + 1
        rep = True

        if not old_name_column:
            old_name_column = "A"
            pass
        if not new_name_column:
            new_name_column = "B"
            pass

        print(old_name_column, new_name_column, path)

        for row in range(start_row, end_row):
            old_name = ws.cell(row=row, column=column_index_from_string(old_name_column)).value
            new_name = ws.cell(row=row, column=column_index_from_string(new_name_column)).value
            if old_name and new_name:
                if not os.path.exists(old_name):
                    old_name = path + "/" + old_name
                    print(old_name)
                    pass
                if os.path.exists(old_name):
                    # 获取文件名和扩展名
                    newfile_name, file_ext = os.path.splitext(new_name)
                    print(newfile_name)
                    print(file_ext)

                    # 替换扩展名
                    if not file_ext or rep:
                        file_name, file_ext = os.path.splitext(old_name)
                        print(file_name)
                        print(file_ext)
                        pass

                    # 构建新文件名(包括路径和扩展名)
                    new_file_name = os.path.join(os.path.dirname(old_name), newfile_name + file_ext)
                    print(new_file_name)

                    # 重命名文件
                    os.rename(old_name, new_file_name)
                    pass
                pass
            pass
        pass
    pass


def show_help(self):
    info = wx.adv.AboutDialogInfo()
    info.SetIcon(wx.Icon(getattr(help_info, "help").GetBitmap()))
    info.SetName("批量重命名工具")
    info.SetVersion("20231005")
    info.SetCopyright("(c) 2023 by sunswy")
    info.SetDescription("如使用中有什么不明白\n或程序有bug需要改进,\n请扫码添加微信详细说明")
    wx.adv.AboutBox(info)
    pass


class NewWindows(Root):

    def start_run(self, event):
        super().start_run(event)
        run_rename()
        pass

    def load_file(self, event):
        super().load_file(event)
        filename = wx.FileSelector("选择一个含命名规则的excel文件",
                                   wildcard="Excel 文件(*.xlsx)|*.xlsx|所有文件 (*.*)|*.*")

        if filename.strip():
            self.m_text_file.SetLabel(filename)
            pass
        pass

    def select_path(self, event):
        super().select_path(event)
        pathname = wx.DirSelector("选择一个路径")

        if pathname.strip():
            self.m_text_path.SetLabel(pathname)
            pass
        pass

    def get_help(self, event):
        super().get_help(event)
        show_help(self)


if __name__ == '__main__':
    app = wx.App()
    frm = NewWindows(None)
    frm.Show()
    app.MainLoop()

UI代码mainframe.py

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

###########################################################################
## Python code generated with wxFormBuilder (version 3.10.1-0-g8feb16b3)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc


###########################################################################
## Class Root
###########################################################################

class Root(wx.Frame):

    def __init__(self, parent):
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"批量重命名工具 by sunswy 20231005",
                          pos=wx.DefaultPosition, size=wx.Size(500, 200),
                          style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)

        self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)

        gSizer_layot = wx.GridSizer(0, 2, 0, 0)

        self.m_text_file = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
        self.m_text_file.SetToolTip(u"包含重命名规则的excel文件")

        gSizer_layot.Add(self.m_text_file, 0, wx.ALL | wx.EXPAND, 5)

        self.m_button_file = wx.Button(self, wx.ID_ANY, u"选择文件", wx.DefaultPosition, wx.DefaultSize, 0)
        gSizer_layot.Add(self.m_button_file, 0, wx.ALL | wx.EXPAND, 5)

        self.m_text_old_column = wx.TextCtrl(self, wx.ID_ANY, u"A", wx.DefaultPosition, wx.DefaultSize, 0)
        self.m_text_old_column.SetToolTip(u"旧文件名所在列 默认列A")

        gSizer_layot.Add(self.m_text_old_column, 0, wx.ALL | wx.EXPAND, 5)

        self.m_text_new_column = wx.TextCtrl(self, wx.ID_ANY, u"B", wx.DefaultPosition, wx.DefaultSize, 0)
        self.m_text_new_column.SetToolTip(u"新文件名所在列 默认列B")

        gSizer_layot.Add(self.m_text_new_column, 0, wx.ALL | wx.EXPAND, 5)

        self.m_text_path = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
        self.m_text_path.SetToolTip(u"如旧文件名包含路径,则此处留空")

        gSizer_layot.Add(self.m_text_path, 0, wx.ALL | wx.EXPAND, 5)

        self.m_button_path = wx.Button(self, wx.ID_ANY, u"选择路径", wx.DefaultPosition, wx.DefaultSize, 0)
        gSizer_layot.Add(self.m_button_path, 0, wx.ALL | wx.EXPAND, 5)

        self.m_button_run = wx.Button(self, wx.ID_ANY, u"运行", wx.DefaultPosition, wx.DefaultSize, 0)
        gSizer_layot.Add(self.m_button_run, 0, wx.ALL | wx.EXPAND, 5)

        self.m_button_help = wx.Button(self, wx.ID_ANY, u"帮助", wx.DefaultPosition, wx.DefaultSize, 0)
        gSizer_layot.Add(self.m_button_help, 0, wx.ALL | wx.EXPAND, 5)

        self.SetSizer(gSizer_layot)
        self.Layout()

        self.Centre(wx.BOTH)

        # Connect Events
        self.m_button_file.Bind(wx.EVT_BUTTON, self.load_file)
        self.m_button_path.Bind(wx.EVT_BUTTON, self.select_path)
        self.m_button_run.Bind(wx.EVT_BUTTON, self.start_run)
        self.m_button_help.Bind(wx.EVT_BUTTON, self.get_help)

    def __del__(self):
        pass

    # Virtual event handlers, override them in your derived class
    def load_file(self, event):
        event.Skip()

    def select_path(self, event):
        event.Skip()

    def start_run(self, event):
        event.Skip()

    def get_help(self, event):
        event.Skip()

https://gitee.com/Sunswy/file_rename.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值