python批量化修改文件名字(带窗口,可调整设置)

  • 功能描述
  • 注意事项
  • 效果图
  • 源代码

功能描述

主要有以下几个
1、直接修改文件名字,并在名字后面添加数字进行排序。
2、在文件名字前面增加前缀.
3、在文件名字后面增加后缀.不改变格式
4、批量删除文件名字中的特定文字.

注意事项

1、点击运行后,修改的是该文件夹下的所有文件(不包含文件夹)。
2、如果修改名字错误,可以点击返回,即可实现修改名字一件改回原名字,但是要注意只能返回上一次的名字,不能返回上上次的或更多的,使用中请注意.
3、简单修改源码中的设置,就可以使其更加符合自己的审美观.

效果图

图片:

源代码

"""引用模块"""
import tkinter as tk
from tkinter import Label, filedialog
import os
from tkinter.constants import ANCHOR, CENTER, RIGHT, TRUE
import  time
"""参数设置"""
path="D://mkdir"#临时文件存放点
width=500  #设置窗口宽度
height=300 #设置窗口高度
win_center=True  #是否设置窗口自动居中,True  代表是,False 代表否  ,如果设置窗口居中x_,y_参数将不起作用
x_=0    #如果没有设置自动窗口居中,该参数为必须项,窗口开始的x坐标
y_=0    #如果没有设置自动窗口居中,该参数为必须项,窗口开始的y坐标
name="批量命名"  #窗口名字win_bg="#f2eada"   #窗口背景
label_fg='#130c0e' #标签上的字体颜色button_bg="#00FFFF" #按钮背景颜色
button_fg='#130c0e'#按钮上的字体颜色entry_bg="#F8F8FF"    #输入框显示字体颜色
entry_fg='#BA55D3'  #输入框背景颜色
ico="" #设置窗口图标,空代表无"""自定义函数"""
def write(path,word_) :#将word 写入path路径下try :with open(path+"//"+'dir.txt','a',encoding='utf-8-sig') as f :f.write(str(word_))except :os.makedirs(path)write(path,word_)
def choosedir() :  #选择文件夹函数dir = filedialog.askdirectory()   #获取目标文件夹路径text.set(dir)  #数值传递
def change() :#修改path路径下的文件名字,num表示选项n=1   #计数器file_dir=text.get()alist=os.listdir(file_dir)  #获取选择的文件夹路径下的文件列表clist=[]  #存放修改记录dlist=[]  #存放修改失败记录change_word=str(word.get())#获取修改词if str(choose.get())=='0':for i in alist :if os.path.isfile(os.path.join(file_dir,i)) :   #判断是否是文件try :blist=os.path.splitext(i)               #文件名字与格式old_name=os.path.join(file_dir,i) new_name=os.path.join(file_dir,change_word+str(n)+blist[1])os.rename(old_name,new_name)  #更换名字clist.append([old_name,new_name])n+=1except :dlist.append(i)return clist,dlistif str(choose.get())=='1':for i in alist :if os.path.isfile(os.path.join(file_dir,i)) :try :blist=os.path.splitext(i)old_name=os.path.join(file_dir,i) new_name=os.path.join(file_dir,blist[0]+change_word+blist[1])os.rename(old_name,new_name)clist.append([old_name,new_name])except :dlist.append(i)return clist,dlistif str(choose.get())=='2':for i in alist :if os.path.isfile(os.path.join(file_dir,i)) : #判断是否是文件try :blist=os.path.splitext(i)   old_name=os.path.join(file_dir,i) new_name=os.path.join(file_dir,change_word+i)os.rename(old_name,new_name)clist.append([old_name,new_name])except :dlist.append(i)return clist,dlistif str(choose.get())=='3':for i in alist :if os.path.isfile(os.path.join(file_dir,i)) :try:blist=os.path.splitext(i)old_name=os.path.join(file_dir,i) if change_word in blist[0] :  #判断关键词是否在文件名字中new=str(blist[0]).replace(change_word,"")new_name=os.path.join(file_dir,new+blist[1])#拼接出新名字os.rename(old_name,new_name)clist.append([old_name,new_name])except :dlist.append(i)return clist,dlist
def run() :  #程序运行mk_dir=path+'\\'+"filename.txt"start_time=time.time()elist=0elist,blist=change()for i in elist :try :with open (mk_dir,'a',encoding='utf-8-sig') as f :f.write(str(i[0])+'#'+str(i[1])+'\n')except :os.mkdir(path)with open (mk_dir,'a',encoding='utf-8-sig') as f :f.write(str(i[0])+'#'+str(i[1])+'\n') #将变化的名字写入文件中,方便返回时候调用if len(blist) != 0 :#判断有没有出错的文件  end_time=time.time()message.set("一共有{}个文件成功,{}个文件修改失败,共耗时{}秒".format(len(elist),len(blist),int((end_time-start_time)*100)/100))else :end_time=time.time()message.set("{}个文件全部修改成功,0失败,共耗时{}秒".format(len(elist),int((end_time-start_time)*100)/100))
def exit_() : #程序退出try :os.remove(path+'\\'+"filename.txt")  #返回成功后删除存档os.rmdir(path)  #返回成功后删除存档except :message.set("文件删除失败")time.sleep(1)finally :exit()def return_() :try :start_time=time.time()with open(path+'\\'+"filename.txt",'r',encoding='utf-8-sig') as f :alist=f.readlines()for i in alist :blist=str(i).split("#")old_name=blist[0]new_name=blist[1][:-1]os.rename(new_name,old_name)     end_time=time.time() message.set("返回成功,共耗时{}秒".format(int((end_time-start_time)*100)/100))os.remove(path+'\\'+"filename.txt")  #返回成功后删除存档except Exception as e:message.set("返回失败,{}".format(e))"""程序书写"""
root = tk.Tk() #生成一个主窗口对象
root.resizable(width=True,height=True)
root.attributes('-topmost', -1)  #窗口置于最顶层
alignstr='{}x{}+{}+{}'.format(width,height,x_,y_)
if win_center :screenwidth = root.winfo_screenwidth()screenheight = root.winfo_screenheight()alignstr = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)
else :alignstr='{}x{}+{}+{}'.format(width,height,x_,y_)
root.geometry(alignstr)
root.title(name)
root['bg'] = win_bg  #设置背景颜色
try :#测试是否设置图标路径root.iconbitmap(ico)
except :pass
"""设置传递数值的变量"""
text=tk.StringVar()  #选取文件夹信息传递
text.set("")#赋值
choose = tk.StringVar() #选择功能的选项传递
choose.set(0)#赋值
word=tk.StringVar() #输入的字符串传递
word.set("")#赋值
message=tk.StringVar()#传递程序运行中的信息
message.set("")
"""创建标签/按钮等功能"""
tk.Label(root, #创建标签1anchor = tk.E, #设置标签文本的位置bg = win_bg, #设置标签的背景色fg =label_fg, #设置标签的前景色.文字颜色text = "请选择文件夹", #设置标签中显示的文本width =10, #设置标签的宽度justify=tk.LEFT,height = 1).place(x=0,y=30) #设置标签的高度
tk.Entry( root,textvariable = text,  #默认文字为空bg=entry_bg,fg=entry_fg,width=40,justify=tk.LEFT,).place(x=100,y=30)
tk.Button(root, #创建标签1anchor = tk.E, #设置标签文本的位置bg = button_bg, #设置标签的背景色fg = button_fg, #设置标签的前景色text = '选择文件夹', #设置标签中显示的文本justify=tk.CENTER,width =9, #设置标签的宽度command=choosedir,takefocus=TRUE,height = 1).place(x=400,y=30) #设置标签的高度alist=['修改文件名字','尾端添加汉字',"前端添加汉字",'删除特定字符']#设置选项
tk.Radiobutton(root, #创建单选按钮1variable = choose, #设置选中单选按钮时的变量值value = 0, bg=button_bg,fg=button_fg,indicatoron=0,text = alist[0]).place(x=0,y=70) #设置单选按钮的显示文本
tk.Radiobutton(root, #创建单选按钮1variable = choose, #设置选中单选按钮时的变量值value = 1, bg=button_bg,fg=button_fg,indicatoron=0,text = alist[1]).place(x=0,y=100) #设置单选按钮的显示文本
tk.Radiobutton(root, #创建单选按钮1variable = choose, #设置选中单选按钮时的变量值value = 2, bg=button_bg,fg=button_fg,indicatoron=0,text = alist[2]).place(x=0,y=130) #设置单选按钮的显示文本
tk.Radiobutton(root, #创建单选按钮1variable = choose, #设置选中单选按钮时的变量值value = 3, bg=button_bg,fg=button_fg,indicatoron=0,text = alist[3]).place(x=0,y=160) #设置单选按钮的显示文本
tk.Button(root, #创建标签1bg=button_bg,fg=button_fg,text = '运行', #设置标签中显示的文本justify=tk.CENTER,width =9, #设置标签的宽度command=run,takefocus=TRUE,height = 1).place(x=200,y=260) #设置标签的高度tk.Button(root, #创建标签1bg=button_bg,fg=button_fg,text = '返回', #设置标签中显示的文本justify=tk.CENTER,width =9, #设置标签的宽度command=return_,takefocus=TRUE,height = 1).place(x=0,y=260) #设置标签的高度
tk.Button(root, #创建标签1bg=button_bg,fg=button_fg,text = '退出', #设置标签中显示的文本justify=tk.CENTER,width =9, #设置标签的宽度command=exit_,takefocus=TRUE,height = 1).place(x=400,y=260) #设置标签的高度tk.Label(root, #创建标签1anchor = tk.NW, #设置标签文本的位置bg = win_bg, #设置标签的背景色fg = label_fg, #设置标签的前景色textvariable= message, #设置标签中显示的文本width =100, #设置标签的宽度justify=tk.LEFT,height = 6).place(x=120,y=70) #设置标签的高度
tk.Label(root, #创建标签1anchor = tk.E, #设置标签文本的位置bg = win_bg, #设置标签的背景色fg = label_fg, #设置标签的前景色.文字颜色text = "请输入字符", #设置标签中显示的文本width =10, #设置标签的宽度justify=tk.LEFT,height = 1).place(x=0,y=200) #设置标签的高度
tk.Entry( root,text = word,  #默认文字为空bg=entry_bg,fg=entry_fg,width=40,justify=tk.LEFT,).place(x=100,y=200)
root.mainloop() #进入消息循环
exit_()
'''
#FFB6C1 LightPink 浅粉红
#FFC0CB Pink 粉红
#DC143C Crimson 深红/猩红
#FFF0F5 LavenderBlush 淡紫红
#DB7093 PaleVioletRed 弱紫罗兰红
#FF69B4 HotPink 热情的粉红
#FF1493 DeepPink 深粉红
#C71585 MediumVioletRed 中紫罗兰红
#DA70D6 Orchid 暗紫色/兰花紫
#D8BFD8 Thistle 蓟色
#DDA0DD Plum 洋李色/李子紫
#EE82EE Violet 紫罗兰
#FF00FF Magenta 洋红/玫瑰红
#FF00FF Fuchsia 紫红/灯笼海棠
#8B008B DarkMagenta 深洋红
#800080 Purple 紫色
#BA55D3 MediumOrchid 中兰花紫
#9400D3 DarkViolet 暗紫罗兰
#9932CC DarkOrchid 暗兰花紫
#4B0082 Indigo 靛青/紫兰色
#8A2BE2 BlueViolet 蓝紫罗兰
#9370DB MediumPurple 中紫色
#7B68EE MediumSlateBlue 中暗蓝色/中板岩蓝
#6A5ACD SlateBlue 石蓝色/板岩蓝
#483D8B DarkSlateBlue 暗灰蓝色/暗板岩蓝
#E6E6FA Lavender 淡紫色/熏衣草淡紫
#F8F8FF GhostWhite 幽灵白
#0000FF Blue 纯蓝
#0000CD MediumBlue 中蓝色
#191970 MidnightBlue 午夜蓝
#00008B DarkBlue 暗蓝色
#000080 Navy 海军蓝
#4169E1 RoyalBlue 皇家蓝/宝蓝
#6495ED CornflowerBlue 矢车菊蓝
#B0C4DE LightSteelBlue 亮钢蓝
#778899 LightSlateGray 亮蓝灰/亮石板灰
#708090 SlateGray 灰石色/石板灰
#1E90FF DodgerBlue 闪兰色/道奇蓝
#F0F8FF AliceBlue 爱丽丝蓝
#4682B4 SteelBlue 钢蓝/铁青
#87CEFA LightSkyBlue 亮天蓝色
#87CEEB SkyBlue 天蓝色
#00BFFF DeepSkyBlue 深天蓝
#ADD8E6 LightBlue 亮蓝
#B0E0E6 PowderBlue 粉蓝色/火药青
#5F9EA0 CadetBlue 军兰色/军服蓝
#F0FFFF Azure 蔚蓝色
#E0FFFF LightCyan 淡青色
#AFEEEE PaleTurquoise 弱绿宝石
#00FFFF Cyan 青色
#00FFFF Aqua 浅绿色/水色
#00CED1 DarkTurquoise 暗绿宝石
#2F4F4F DarkSlateGray 暗瓦灰色/暗石板灰
#008B8B DarkCyan 暗青色
#008080 Teal 水鸭色
#48D1CC MediumTurquoise 中绿宝石
#20B2AA LightSeaGreen 浅海洋绿
#40E0D0 Turquoise 绿宝石
#7FFFD4 Aquamarine 宝石碧绿
#66CDAA MediumAquamarine 中宝石碧绿
#00FA9A MediumSpringGreen 中春绿色
#F5FFFA MintCream 薄荷奶油
#00FF7F SpringGreen 春绿色
#3CB371 MediumSeaGreen 中海洋绿
#2E8B57 SeaGreen 海洋绿
#F0FFF0 Honeydew 蜜色/蜜瓜色
#90EE90 LightGreen 淡绿色
#98FB98 PaleGreen 弱绿色
#8FBC8F DarkSeaGreen 暗海洋绿
#32CD32 LimeGreen 闪光深绿
#00FF00 Lime 闪光绿
#228B22 ForestGreen 森林绿
#008000 Green 纯绿
#006400 DarkGreen 暗绿色
#7FFF00 Chartreuse 黄绿色/查特酒绿
#7CFC00 LawnGreen 草绿色/草坪绿
#ADFF2F GreenYellow 绿黄色
#556B2F DarkOliveGreen 暗橄榄绿
#9ACD32 YellowGreen 黄绿色
#6B8E23 OliveDrab 橄榄褐色
#F5F5DC Beige 米色/灰棕色
#FAFAD2 LightGoldenrodYellow 亮菊黄
#FFFFF0 Ivory 象牙色
#FFFFE0 LightYellow 浅黄色
#FFFF00 Yellow 纯黄
#808000 Olive 橄榄
#BDB76B DarkKhaki 暗黄褐色/深卡叽布
#FFFACD LemonChiffon 柠檬绸
#EEE8AA PaleGoldenrod 灰菊黄/苍麒麟色
#F0E68C Khaki 黄褐色/卡叽布
#FFD700 Gold 金色
#FFF8DC Cornsilk 玉米丝色
#DAA520 Goldenrod 金菊黄
#B8860B DarkGoldenrod 暗金菊黄
#FFFAF0 FloralWhite 花的白色
#FDF5E6 OldLace 老花色/旧蕾丝
#F5DEB3 Wheat 浅黄色/小麦色
#FFE4B5 Moccasin 鹿皮色/鹿皮靴
#FFA500 Orange 橙色
#FFEFD5 PapayaWhip 番木色/番木瓜
#FFEBCD BlanchedAlmond 白杏色
#FFDEAD NavajoWhite 纳瓦白/土著白
#FAEBD7 AntiqueWhite 古董白
#D2B48C Tan 茶色
#DEB887 BurlyWood 硬木色
#FFE4C4 Bisque 陶坯黄
#FF8C00 DarkOrange 深橙色
#FAF0E6 Linen 亚麻布
#CD853F Peru 秘鲁色
#FFDAB9 PeachPuff 桃肉色
#F4A460 SandyBrown 沙棕色
#D2691E Chocolate 巧克力色
#8B4513 SaddleBrown 重褐色/马鞍棕色
#FFF5EE Seashell 海贝壳
#A0522D Sienna 黄土赭色
#FFA07A LightSalmon 浅鲑鱼肉色
#FF7F50 Coral 珊瑚
#FF4500 OrangeRed 橙红色
#E9967A DarkSalmon 深鲜肉/鲑鱼色
#FF6347 Tomato 番茄红
#FFE4E1 MistyRose 浅玫瑰色/薄雾玫瑰
#FA8072 Salmon 鲜肉/鲑鱼色
#FFFAFA Snow 雪白色
#F08080 LightCoral 淡珊瑚色
#BC8F8F RosyBrown 玫瑰棕色
#CD5C5C IndianRed 印度红
#FF0000 Red 纯红
#A52A2A Brown 棕色
#B22222 FireBrick 火砖色/耐火砖
#8B0000 DarkRed 深红色
#800000 Maroon 栗色
#FFFFFF White 纯白
#F5F5F5 WhiteSmoke 白烟
#DCDCDC Gainsboro 淡灰色
#D3D3D3 LightGrey 浅灰色
#C0C0C0 Silver 银灰色
#A9A9A9 DarkGray 深灰色
#808080 Gray 灰色
#696969 DimGray 暗淡灰
#000000 Black 纯黑
'''

如果需要成品的EXE文件请点击下方链接下载,源码也在里面。
链接: 批量修改文件名字软件下载.

python批量化修改文件名字(带窗口,可调整设置)相关推荐

  1. python改文件名_通过python顺序修改文件名字的方法

    通过python顺序修改文件名字的方法 更新时间:2018年07月11日 11:48:55 作者:longma666666 今天小编就为大家分享一篇通过python顺序修改文件名字的方法,具有很好的参 ...

  2. python批量修改文件名字为数字编号

    控制台进入python环境 win+R---->cmd----->python import os#输入待修改文件夹路径 path="E:/pyexe/exe/test/&quo ...

  3. python批量修改文件名字为1,2,3,4,5等等

    import os import os.pathrootdir = 'C:/Users/Administrator/Desktop/目标文件夹/' files = os.listdir(rootdir ...

  4. unity 编辑器窗口 批量修改文件名字

    unity 编辑器批量修改.替换 文件名: 记录一下,窗口效果如下,需要选中文件,可多选 在排序的基础上增加了双排序和替换功能 代码: public class RenameFile : Editor ...

  5. c语言;文件名批量修改要求可以修改整个文件内文件名或后缀名自动,ubuntu批量修改文件名字(换动画资源必用)...

    Ubuntu 16.04 批量改文件名 在Ubuntu16.04下给文件批量改名可以使用rename命令. MATLAB中批量修改文件的名字 在运行matlab时有时需要用统一的文件格式,这个时候对文 ...

  6. python打开excel的函数-Python读取excel文件中带公式的值的实现

    在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...

  7. python批量修改文件扩展名

    python批量修改文件扩展名录 前言 代码如下 前言 利用python将文件夹里的.txt文件修改为.tif文件. 代码如下 import os dir='/home/下载/'#文件所在目录 fil ...

  8. OS模块--批量修改文件名字(一)创建和修改文件路径

    OS模块:在程序中,经常需要对大量文件和路径进行操作,比如:查询某一路径下同种类型文件,批量修改文件名字等.OS模块提供了非常丰富得方法用来处理文件和目录. 一.常用OS模块列表 二.OS模块创建文件 ...

  9. 【python】修改文件后缀,将JPG转换为PNG/PNG转换为JPG

    [python]修改文件后缀,将JPG转换为PNG/PNG转换为JPG 前言 os.rename replace 前言 本文只要有两种方法实现将JPG格式图片转换为PNG,第一种为应用os.renam ...

最新文章

  1. 在数据库恢复之前将数据库置为单用户模式
  2. .NET中书写XML的一种简单方法
  3. Centos 7 下安装PHP7.2(与Apache搭配的安装方式)
  4. alphogo 理解
  5. oracle mysql 创建表,Oracle 创建表用户、空间
  6. dz自动开起html,discuz论坛开启markdown 允许html代码嵌入js
  7. centos 账号安全设置
  8. 还记得吗?可我摸了摸的太空堡垒
  9. java file list listfiles,Java File listFiles()用法及代码示例
  10. * 与 ** 在调用函数时的作用
  11. 关于Timestamp的valueOf()方法
  12. ArcGIS水文分析实战教程(3)DEM数据准备
  13. rails rake和示例
  14. c语言回调函数_为什么计算机专业必学C语言?既然是基础,那为何很多人学不懂?...
  15. csdn设置资源下载所需积分
  16. 冰河木马学习之监听服务端失败
  17. 行式 Excel 文件去重
  18. JDBC - new Date插入mysql数据库,数据库时间多一秒问题
  19. 6岁就获吉尼斯世界纪录!这届10后程序员「小鬼当家」
  20. Android Q版本实现自动连接WiFi

热门文章

  1. win7开机突然变得很慢_win7系统加速开机速度解决开机变慢问题的技巧
  2. Java基础(28)数据输入输出流、内存操作流、打印流、随机访问流、序列化与反序列化流、Properties类(集合)
  3. JavaScript案例——打地鼠游戏及其实现
  4. Javascript数据类型及函数
  5. 前端网页自动刷新的3种方法
  6. c语言------Swap函数
  7. linux下复制光盘映像
  8. python内存监控工具memory_profiler和guppy的用法
  9. 【PDF添加印章】Java在PDF中添加指定尺寸大小的图片印章
  10. linux dd命令卡住,linux下显示dd命令的进度: