利用Python的tkinter模块实现界面化的批量修改文件名

用Python编写过批量修改文件名的脚本程序,代码很简单,运行也比较快,唯一美中不足之处是每次批量修改文件名时都需要执行以下步骤:

  • 1)复制文件夹路径;
  • 2)打开脚本程序
  • 3)替换脚本中的文件夹路径
  • 4)保存脚本程序
  • 5)执行脚本程序

为了便于操作,最好还是弄成GUI界面,手动选择文件夹,这样程序也更通用。Python中的GUI库很多,绝大部分都支持跨平台,其中安装python时自带的GUI库是tkinter,本文就学习并创建基于tkinte的批量修改文件名程序。

本文涉及的知识点包括以下几个:

  • 1)使用tkinter.Tk创建窗口,并且调用geometry函数设置窗口的宽和高,需要注意的是geometry函数接收的是字符串,宽度x高度,中间的乘号其实是小写的x,用数学符号或者是大写的X会报错;
  • 2)布局方式:根据参考文献1,tkinter有pack、grid、place三种布局方式,本文采购grid布局方式,该方式有点类似Winfom中的TableLayoutPanel,不同之处在于不用提前设置好行数和列数,只需指定所用控件的行号和列号即可;
  • 3)控件,主要使用了标签(tkinter.Label)、文本(tkinter.Entry)、按钮(tkinter.Button)控件,tkinte通过变量绑定的方式获取或更新文本控件的值。
  • 4)浏览文件夹,根据参考文献2,调用tkinter.filedialog中的askdirectory()选择文件夹。

全部代码如下所示:

# coding=gbk
import tkinter as tk
import os
from tkinter.filedialog import askdirectory
def BrowseDri():
    txtDirPath.set(askdirectory())

def BatchReplaceFileName():
    path = txtDirPath.get()
    strSign=txtRemovedContent.get()

    files=os.listdir(path)

    for onefile in files:
        if onefile.find(strSign)<0:
            continue
        oldname=path+"\\"+onefile
        newname=path+"\\"+onefile.replace(strSign,"")
        os.rename(oldname,newname)
        print(oldname,"====>",newname)

window=tk.Tk()
window.title('批量处理文件名')
window.geometry('600x400')

tk.Label(window,text='选择文件夹').grid(row=0,column=0)
txtDirPath=tk.StringVar()
tk.Entry(window,textvariable=txtDirPath).grid(row=0,column=1)
tk.Button(window,text='浏览',command=BrowseDri).grid(row=0,column=2)

tk.Label(window,text='输入要移除的内容:').grid(row=1,column=0)
txtRemovedContent=tk.StringVar()
tk.Entry(window,textvariable=txtRemovedContent).grid(row=1,column=1)
tk.Button(window,text='移除',command=BatchReplaceFileName).grid(row=1,column=2)
tk.mainloop()

最后是程序运行效果,如下面几张截图所示:运行程序后,首先选择要批量处理的文件夹,然后设置文件名中要移除的内容,最后点击移除按钮批量处理文件名。

上文主要实现了批量移除文件名中的指定字符串,无法进行替换,本文在前面工作的基础上,增加批量替换文件名中指定字符串的功能。

新增的功能点不多,主要包括:

  • 单选框控件:使用tkinter.Radiobutton函数创建单选框控件,并用value属性设置单选框对应的值,也即选中单选框时得到的值,提前定义好变量(本文中定义了Int变量),创建单选框控件时用variable属性绑定变量。如果要设置默认选中的单选框,则直接设置变量值为指定单选框对应的value值即可;
  • 设置文本框的默认状态:文本框使用state属性设置文本框的可用状态,包括normal/disabled,可以在创建Entry时指定文档框的state属性为disabled,则文本框默认不可用;
  • 修改控件属性:除了在创建控件时指定属性值之外,在程序运行过程中修改控件属性有多种方式(详见参考文献5),本文采用通过字典键设置属性方式动态修改文本框的可用状态。

批量修改文件名程序的完整代码如所示:

# coding=gbk
import tkinter as tk
import os
from tkinter.filedialog import askdirectory
def BrowseDri():
    txtDirPath.set(askdirectory())
def SetControlStatus():
    mode=processMode.get()
    if(mode==1):
        txtRemoved['state'] = 'normal'
        txtBeforeReplaced['state'] = 'disabled'
        txtAfterReplaced['state'] = 'disabled'
        btnProcess['text']='移除'
    elif mode==2:
        txtRemoved['state'] = 'disabled'
        txtBeforeReplaced['state'] = "normal"
        txtAfterReplaced['state'] = 'normal'
        btnProcess['text']='替换'

def BatchReplaceFileName():
    path = txtDirPath.get()
    mode=processMode.get()

    if(mode==1):
        strOldSign=txtRemovedContent.get()
        strNewSign=""
    elif mode==2:
        strOldSign=txtBeforeReplactContent.get()
        strNewSign=txtAfterReplactContent.get()

    files=os.listdir(path)
    for onefile in files:
        if onefile.find(strOldSign)<0:
            continue
        oldname=path+"\\"+onefile
        newname=path+"\\"+onefile.replace(strOldSign,strNewSign)
        os.rename(oldname,newname)
        print(oldname,"====>",newname)

window=tk.Tk()
window.title('批量处理文件名')
window.geometry('400x300')

tk.Label(window,text='选择文件夹').grid(row=0,column=0)
txtDirPath=tk.StringVar()
tk.Entry(window,textvariable=txtDirPath).grid(row=0,column=1)
tk.Button(window,text='浏览',command=BrowseDri).grid(row=0,column=2)

processMode =tk.IntVar()
tk.Radiobutton(window, text="移除内容", variable=processMode, value=1, command=SetControlStatus).grid(row=1,column=0)
tk.Label(window,text='输入要移除的内容:').grid(row=1,column=1)
txtRemovedContent=tk.StringVar()
txtRemoved=tk.Entry(window,textvariable=txtRemovedContent)
txtRemoved.grid(row=1,column=2)
tk.Radiobutton(window, text="替换内容", variable=processMode, value=2, command=SetControlStatus).grid(row=2,column=0)
tk.Label(window,text='输入替换前的内容:').grid(row=2,column=1)
txtBeforeReplactContent=tk.StringVar()
txtBeforeReplaced=tk.Entry(window,textvariable=txtBeforeReplactContent,state='disabled')
txtBeforeReplaced.grid(row=2,column=2)
tk.Label(window,text='输入替换后的内容:').grid(row=3,column=1)
txtAfterReplactContent=tk.StringVar()
txtAfterReplaced=tk.Entry(window,textvariable=txtAfterReplactContent,state='disabled')
txtAfterReplaced.grid(row=3,column=2)

processMode.set(1)

btnProcess=tk.Button(window,text='移除',command=BatchReplaceFileName)
btnProcess.grid(row=4,column=0)
tk.mainloop()

最后是程序效果,如下图所示,选择指定文件夹,首先将文件夹中所有文件中的car字符串替换为che@,接着再移除文件名中的@字符。

到此这篇关于利用Python的tkinter模块实现界面化的批量修改文件名的文章就介绍到这了,更多相关Python tkinter批量修改文件名内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python批量修改文件名的方式详解

    目录 批量修改文件名(保留后缀) 批量修改文件名(全改) 读取文件下的所有文件名 总结 批量修改文件名(保留后缀) 这种方法,保留了文件原本的后缀.这里主要演示的是对图片名的修改. # 批量修改文件名 # 批量修改图片文件名 import os import re import sys path = 'F:\Temp\ZZ' fileList = os.listdir(path) # 待修改文件夹 print("修改前:"+str(fileList)) # 输出文件夹中包含的文件 cu

  • Python批量修改文件名实例操作分享

    此处以修改图片文件名为例,将图片复制到新的目录中再修改名称~ 原始文件名如下: 修改后的效果如下: 代码: 实现将one文件夹中的每一个图片复制到two文件夹并修改图片名为按照a.b.c.d递增排序 思路:重命名为新建一个文件将原来文件内容复制过去 import os   def alterFileName(source,target):     print("当前文件夹下有以下几个文件>>>")     file_list=os.listdir(source)  

  • python使用tkinter模块实现文件选择功能

    目录 前言 1.导入库和模块 2.编写按钮命令 3. 窗体初始化及布局 4.运行 前言 学习Python中,总想做个图形界面,找来找去,找到了tkinter. 练习内容:图形界面中,点击按钮后,利用弹出对话框选择文件(或文件夹) 1.导入库和模块 import tkinter as tk from tkinter import filedialog 此处练习过程中出现的错误:在没有第2个导入语句时,使用 tk.filedialog 后,提示错误,显示 Cannot find reference

  • python批量修改文件名的三种方法实例

    目录 前言 一.python批量修改文件名 二.python批量修改文件名(按顺序) 三.python批量修改文件名(删除指定字符) 总结 前言 当我们从网站爬取若干张图片,或需要将一些txt.excel.jpg等大批量的文件修改为有规律的名称,方便整理. 提示:以下是本篇文章正文内容,下面案例可供参考 一.python批量修改文件名 提示:待修改的文件夹下只能包含需要修改的文件,然后更改源码里面的路径即可. 1.源码 代码如下(示例): #批量修改文件名 #批量修改图片文件名 import o

  • Python批量修改文件名,文件再多也只要一秒

    目录 一.我为什么要写这篇 二.在原有的名字前中后批量加字 三.所有文件重新命名并添加序号 四.导入Excel数据批量修改为文件名 一.我为什么要写这篇 好兄弟们,妹子要少看,技能要多学,每天一个小技巧,撩妹手段少不了~ 昨天有人问我怎么批量修改文件名,然后我随便写了一种,他说我不nice,这我就忍不住了,反手就给他写了好几种,你们来看看,这个到底刑不刑. 很多兄弟在学习Python的时候因为不太明确学习方向,没有好的学习资料,遇到问题也没人解答,就很难受,甚至可能学着学着就放弃了,直接私我就行

  • python图形用户界面tkinter之标签Label的使用说明

    目录 图形用户界面tkinter之标签Label使用 导入tkinter模块 构建窗口对象 窗口属性设置 标签label 使用tkinter解决的一些小问题 Label的weight参数 图形用户界面tkinter之标签Label使用 导入tkinter模块 from tkinter import * 构建窗口对象 root = Tk() 窗口属性设置 #窗口标题 root.title('窗口标题') #窗口大小 root.geometry('200x300') #设定窗口背景颜色 root.c

  • python图形用户界面tkinter之按钮Button的使用说明

    目录 python tkinter按钮Button的使用 创建和设置窗口 按钮Button属性1 按钮Button属性2 修改Button属性 python tkinter的Button组件 Tkinter的布局方式有三种 python tkinter按钮Button的使用 创建和设置窗口 from tkinter import * #创建窗口对象 root = Tk() #窗口属性设置 root.title ('窗口标题') root.geometry('300x400') root.conf

  • 利用Python的tkinter模块实现界面化的批量修改文件名

    用Python编写过批量修改文件名的脚本程序,代码很简单,运行也比较快,唯一美中不足之处是每次批量修改文件名时都需要执行以下步骤: 1)复制文件夹路径: 2)打开脚本程序 3)替换脚本中的文件夹路径 4)保存脚本程序 5)执行脚本程序 为了便于操作,最好还是弄成GUI界面,手动选择文件夹,这样程序也更通用.Python中的GUI库很多,绝大部分都支持跨平台,其中安装python时自带的GUI库是tkinter,本文就学习并创建基于tkinte的批量修改文件名程序. 本文涉及的知识点包括以下几个:

  • 如何利用python之wxpy模块玩转微信

    wxpy也是一个python的模块,利用它我们可以做很多有意思的事情 首先利用一句代码我们就可以利用python登录网页版微信 bot = Bot(cache_path= True) 这条语句会产生一个二维码,我们扫描了这个二维码之后就可以登录我们的微信了 功能一:获得微信好友信息 利用一行语句获得你微信好友的个数.男女比例.TOP10省份及TOP10城市 my_friends.stats_text() 效果如图 利用下面两行代码我们可以给微信好友发送信息 friends = my_friend

  • Python使用tkinter模块实现推箱子游戏

    前段时间用C语言做了个字符版的推箱子,着实是比较简陋.正好最近用到了Python,然后想着用Python做一个图形界面的推箱子.这回可没有C那么简单,首先Python的图形界面我是没怎么用过,在网上找了一大堆教材,最后选择了tkinter,没什么特别的原因,只是因为网上说的多. 接下来就来和大家分享一下,主要分享两点,第一就是这个程序的实现过程,第二点就是我在编写过程中的一些思考. 一.介绍 开发语言:Python 3.7 开发工具:PyCharm 2019.2.4 日期:2019年10月2日

  • Python基于Tkinter模块实现的弹球小游戏

    本文实例讲述了Python基于Tkinter模块实现的弹球小游戏.分享给大家供大家参考,具体如下: #!usr/bin/python #-*- coding:utf-8 -*- from Tkinter import * import Tkinter import random import time #创建小球的类 class Ball: def __init__(self,canvas,paddle,color): #参数:画布,球拍和颜色 self.canvas = canvas self

  • 如何利用python的tkinter实现一个简单的计算器

    做一个计算器,这是我想要达成的效果: 在按下按钮或者按下键盘的时候,第一行输入框会显示输入的内容,第二行显示框则会预览运算结果,如果发生异常,输入内容格式错误,无法计算,则显示框显示"错误". 按"="按钮或按键回车计算结果,结果显示在第一行. 1.准备工作 导入库 tkinter import tkinter as tk 2. 开始 定义两个变量: equal_is=False #定义一些变量 textchange='' equal_is 用于判断是否已经计算出结

  • python库Tsmoothie模块数据平滑化异常点抓取

    目录 前言 1.准备 2.Tsmoothie 基本使用 3.基于Tsmoothie的极端异常值检测 前言 在处理数据的时候,我们经常会遇到一些非连续的散点时间序列数据: 有些时候,这样的散点数据是不利于我们进行数据的聚类和预测的.因此我们需要把它们平滑化,如下图所示: 如果我们将散点及其范围区间都去除,平滑后的效果如下: 这样的时序数据是不是看起来舒服多了?此外,使用平滑后的时序数据去做聚类或预测或许有令人惊艳的效果,因为它去除了一些偏差值并细化了数据的分布范围. 如果我们自己开发一个这样的平滑

  • Python基于tkinter模块实现的改名小工具示例

    本文实例讲述了Python基于tkinter模块实现的改名小工具.分享给大家供大家参考,具体如下: #!/usr/bin/env python #coding=utf-8 # # 版权所有 2014 yao_yu # 本代码以MIT许可协议发布 # 文件名批量加.xls后缀 # 2014-04-21 创建 # import os import tkinter as tk from tkinter import ttk version = '2014-04-21' app_title = '文件名

  • 对Python中TKinter模块中的Label组件实例详解

    Python2.7.4 OS-W7x86 1. 简介 Label用于在指定的窗口中显示文本和图像.最终呈现出的Label是由背景和前景叠加构成的内容. Label组件定义函数:Label(master=None, cnf={}, **kw) 其中,kw参数是用来自定义lable组件的键值对. 2. 背景自定义 背景的话,有三部分构成:内容区+填充区+边框 <1>内容区参数有:width,length用于指定区域大小,如果显示前景内容是文本,则以单个字符大小为单位:如果显示的是图像,则以像素为单

  • 利用Python中xlwt模块操作excel的示例详解

    目录 一.安装 二.创建表格并写入 三.设置单元格样式 四.设置单元格宽度 五.设置单元格背景色 六.设置单元格内容对齐方式 七.单元格添加超链接 八.单元格添加公式 九.单元格中输入日期 十.合并行和列 十一.单元格添加边框 一.安装 pip install xlwt 二.创建表格并写入 import xlwt # 创建一个workbook并设置编码 workbook = xlwt.Workbook(encoding = 'utf-8') # 添加sheet worksheet = workb

随机推荐