转自
【python小工具】批量修改所选文件夹中所有文件的名称

源码
注意事项,相同文件名,修改按键只能点击一次,因为加载的列表是无序。第二次点击会造成素材减少。

import tkinter as tk
from tkinter import filedialog # 文件夹路径
from tkinter import messagebox # 弹出窗口
import os # 系统# 方法# 选择文件夹
def openFolderPath():selectFolderPath = filedialog.askdirectory()if(selectFolderPath != ''):folderPath.set(selectFolderPath)findAllFilesInTheFolder()# 读取所选文件夹中所有文件
def findAllFilesInTheFolder():t_filesList = os.listdir(folderPath.get())filesList.set(t_filesList)t_folderNumber = 0t_fileNumber = 0for fileItem in t_filesList:file = os.path.splitext(fileItem)if(file[1] == ''):t_folderNumber += 1else:t_fileNumber += 1labelFilesInfor.config(text='当前目录下有' + str(t_fileNumber) + '个文件,' + str(t_folderNumber) + '个文件夹')# 确认修改所选文件夹中的所有文件名
def startToRenameSelectedFiles():if(setFileNameHead.get() != '' and folderPath.get() != ''):tempIndex = 1t_path = folderPath.get()t_filesList = os.listdir(t_path)for fileItem in t_filesList:file = os.path.splitext(fileItem)if(file[1] != ''):print('修改前:' + fileItem)file_foot = file[1] # 保存后缀名os.rename(t_path + '/' + fileItem,t_path + '/'+ setFileNameHead.get() + str(tempIndex) + file_foot)print('修改后:' + setFileNameHead.get() + str(tempIndex) + file_foot)tempIndex += 1messagebox.showinfo(title=theToolName,message='修改文件名成功')   elif(setFileNameHead.get() == '' and folderPath.get() != ''):messagebox.showerror(title=theToolName,message='请输入前缀名')else:messagebox.showerror(title=theToolName,message='请选择正确的文件夹路径')# 打开所修改的文件夹路径
def openTheFolder():os.system("start explorer "+(folderPath.get()).replace('/','\\'))# 实例化窗口
window = tk.Tk()
# 窗口起名
theToolName = '天羊-批量修改文件名v0.1'
window.title(theToolName)
# 设置窗口大小
window.geometry('600x300')
window.resizable(width=False, height=False) # 禁止拉伸窗口# 设置变量
folderPath = tk.StringVar() # 文件夹路径
filesList = tk.StringVar() # 文件夹路径下所有的文件
setFileNameHead = tk.StringVar() # 修改格式中文件名前缀
setFileNameFoot = tk.StringVar() # 修改格式中文件名后缀# 标签设置
labelPath = tk.Label(window,text='请选择想要修改文件名的文件所处路径',font=('Arial',12),width=0,height=1)
labelPath.place(x=20,y=10)
labelFiles = tk.Label(window,text='当前路径下的文件列表',font=('Arial',12),width=0,height=1)
labelFiles.place(x=20,y=80)
labelSetting = tk.Label(window,text='请设置修改的格式',font=('Arial',12),width=0,height=1)
labelSetting.place(x=400,y=10)
labelSetting = tk.Label(window,text='文件名前缀',font=('Arial',10),width=0,height=1)
labelSetting.place(x=400,y=40)
labelSetting = tk.Label(window,text='文件名后缀',font=('Arial',10),width=0,height=1)
labelSetting.place(x=400,y=80)
labelFilesInfor = tk.Label(window,text='当前目录下有0个文件,0个文件夹',font=('Arial',12),width=0,height=1)
labelFilesInfor.place(x=20,y=250) # 文本输入
insertPath = tk.Entry(window,textvariable=folderPath,width=30,state='readonly')
insertPath.place(x=20,y=40) # 所选择的文件夹路径
insertSetHead = tk.Entry(window,textvariable=setFileNameHead,width=20)
insertSetHead.place(x=400,y=60) # 修改格式中文件名前缀# 选项设置
setFileFoot2 = tk.Radiobutton(window,text='1(1,2,3...)',variable=setFileNameFoot,value=1)
setFileFoot2.place(x=400,y=100)# 按钮设置
buttonInsertPath = tk.Button(window,text='选择路径',font=('Arial',12),width=10,height=1,command=openFolderPath)
buttonInsertPath.place(x=250,y=40) # 选择文件夹按钮
buttonStartRename = tk.Button(window,text='确认修改',font=('Arial',12),width=10,height=1,command=startToRenameSelectedFiles)
buttonStartRename.place(x=450,y=250) # 确认修改按钮# 文件列表设置
filesListBox = tk.Listbox(window,listvariable=filesList,width=40,height=7)
filesListBox.place(x=20,y=100)# 测试按钮
insertPathButton = tk.Button(window,text='打开文件夹',font=('Arial',12),width=10,height=1,command=openTheFolder)
insertPathButton.place(x=330,y=250)# 主窗口循环显示
window.mainloop()

仿写应用1,视频拆分成图片

import tkinter as tk
from tkinter import filedialog # 文件夹路径
from tkinter import messagebox # 弹出窗口
from tkinter import ttk # 导入ttk模块,因为下拉菜单控件在ttk中
import os # 系统
import cv2filedpath = ['videopath','outputpath']# 方法# 选择文件夹
def openFolderPath():selectFolderPath = filedialog.askdirectory()filedpath[0] = selectFolderPathif(selectFolderPath != ''):folderPath.set(selectFolderPath)findAllFilesInTheFolder()
# 选择输出文件夹
def openOutputFolderPath():selectFolderPath = filedialog.askdirectory()filedpath[1] = selectFolderPathif(selectFolderPath != ''):outputfolderPath.set(selectFolderPath)# 读取所选文件夹中所有文件
def findAllFilesInTheFolder():t_filesList = os.listdir(folderPath.get())filesList.set(t_filesList)t_folderNumber = 0t_fileNumber = 0for fileItem in t_filesList:file = os.path.splitext(fileItem)if(file[1] == ''):t_folderNumber += 1else:t_fileNumber += 1labelFilesInfor.config(text='当前目录下有' + str(t_fileNumber) + '个文件,' + str(t_folderNumber) + '个文件夹')# 将视频拆分为图片def video2image():if (folderPath.get() ==' ' ):messagebox.showinfo(title=theToolName, message='请选择正确的视频文件夹路径')elif (outputfolderPath.get() == ''):messagebox.showerror(title=theToolName, message='请选择正确的输出文件夹路径')else:videoPath =filedpath[0]outPath = filedpath[1]filesList= os.listdir(videoPath)for fileItem in filesList:file = fileItem.split('.')if (file[-1] == 'mp4' or file[-1] == 'avi'):videosrc = videoPath + '/' + fileItemprint(videosrc)# 创建文件夹t_file = os.path.splitext(fileItem)fileName = outPath + '/' + t_file[0]if not os.path.exists(fileName):os.makedirs(fileName)vc = cv2.VideoCapture(videosrc)  # 设置视频位置c = 1if vc.isOpened():rval, frame = vc.read()else:rval = False# 设置帧数farmeRate = setFrameRate.get()timeF = int("".join(list(filter(str.isdigit, farmeRate))))while rval:rval, frame = vc.read()if (c % timeF == 0):cv2.imwrite(fileName + '/' + t_file[0] + str(c) + '.jpg', frame)  # 设置图片存储的位置c = c + 1cv2.waitKey(1)vc.release()messagebox.showinfo(title=theToolName, message='修改文件名成功')# 实例化窗口
window = tk.Tk()
# 窗口起名
theToolName = '批量视频抽帧 v0.1'
window.title(theToolName)
# 设置窗口大小
window.geometry('600x350')
window.resizable(width=False, height=False) # 禁止拉伸窗口# 设置变量
folderPath = tk.StringVar()  # 文件夹路径
filesList = tk.StringVar()  # 文件夹路径下所有的文件
setFileNameHead = tk.StringVar()  # 修改格式中文件名前缀
setFileNameFoot = tk.StringVar()  # 修改格式中文件名后缀setFrameRate = tk.StringVar()  # 修改文抽帧频率
outputfolderPath = tk.StringVar()  # 输出文件夹路径# 标签设置
labelPath = tk.Label(window,text='请选择想要修改视频文件所处路径',font=('Arial',12),width=0,height=1)
labelPath.place(x=20, y=10)
labelPath = tk.Label(window,text='请选择图片输出的文件所处路径',font=('Arial',12),width=0,height=1)
labelPath.place(x=20, y=80)labelFiles = tk.Label(window,text='当前路径下的文件列表',font=('Arial',12),width=0,height=1)
labelFiles.place(x=20, y=150)
labelSetting = tk.Label(window,text='请设置修改的格式',font=('Arial',12),width=0,height=1)
labelSetting.place(x=400, y=10)
labelSetting = tk.Label(window,text='抽帧频率',font=('Arial',10),width=0,height=1)
labelSetting.place(x=400, y=40)
labelFilesInfor = tk.Label(window,text='当前目录下有0个文件,0个文件夹',font=('Arial',12),width=0,height=1)
labelFilesInfor.place(x=20, y=300)# 文本输入
insertPath = tk.Entry(window,textvariable=folderPath,width=30,state='readonly')
insertPath.place(x=20,y=40) # 所选择的文件夹路径insertPath2 = tk.Entry(window,textvariable=outputfolderPath,width=30,state='readonly')
insertPath2.place(x=20,y=110) # 所选择的文件夹路径# 创建下拉菜单
cmb = ttk.Combobox(window, textvariable=setFrameRate)
cmb.place(x=400, y=80)cmb['value'] = ('1', '5', '10', '20')
cmb.current(2)
cmb.bind(video2image)# 按钮设置
buttonInsertPath = tk.Button(window,text='选择视频路径',font=('Arial',12),width=10,height=1,command=openFolderPath)
buttonInsertPath.place(x=250,y=40) # 选择文件夹按钮buttonInsertPath = tk.Button(window,text='选择输出路径',font=('Arial',12),width=10,height=1,command=openOutputFolderPath)
buttonInsertPath.place(x=250,y=110) # 选择文件夹按钮
buttonStartRename = tk.Button(window,text='确认修改',font=('Arial',12),width=10,height=1,command=video2image)
buttonStartRename.place(x=450,y=300) # 确认修改按钮# 文件列表设置
filesListBox = tk.Listbox(window,listvariable=filesList,width=40,height=5)
filesListBox.place(x=20,y=170)filesListBox = tk.Listbox(window,listvariable=setFrameRate,width=5,height=1)
filesListBox.place(x=480,y=40)# 主窗口循环显示
window.mainloop()

批量修改所选文件夹中所有文件的名称相关推荐

  1. 计算机内用户文件夹中的文件,在位于计算机上所有用户的AppData文件夹中的文件中修改一行...

    我想修改位于计算机上所有用户的AppData文件夹中的文件中的一行.在位于计算机上所有用户的AppData文件夹中的文件中修改一行 线在prefs.js文件来改变开始: user_pref(" ...

  2. linux批量替换文件夹中所有文件内容

    记录一下,以防自己忘了~ 替换单个文件 sed -i "s/旧字符串/新字符串/g 文件名 替换文件夹中所有文件内容 sed -i "s/旧字符串/新字符串/g" `gr ...

  3. mvfiles:一次性提取多个文件夹中的文件

      作者:吴玉轩 (南开大学) Stata 连享会: 知乎 | 简书 | 码云 | CSDN   Stata连享会 精品专题 || 精彩推文 2019暑期"实证研究方法与经典论文" ...

  4. Python 获取文件夹中的文件列表

    获取文件夹中的文件列表 问题 你想获取文件系统中某个目录下的所有文件列表. 解决方案 使用 os.listdir() 函数来获取某个目录中的文件列表: import os names = os.lis ...

  5. 怎样给文件夹中的文件依次编号?

    怎样给文件夹中的文件依次编号?平时大家在工作的时候经常需要对大量的文件进行编号,例如一个文件夹中有大量的文件,现在需要给这些文件依次编号,并且不改变文件的前后顺序,应该怎么操作?实现这个操作的目的主要 ...

  6. VMware虚拟机文件夹中各文件作用详解

    VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...

  7. 记录一下提取文件夹中所有文件名字

    配置Opencv很有用 快速提取文件夹中所有文件的名称! - 简书 (jianshu.com)

  8. Flume监听文件夹中的文件变化,并把文件下沉到hdfs

    1.采集目录到HDFS 采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去 根据需求,首先定义以下3大要素 采集源,即source--监控文件目录 ...

  9. C++读取文件夹中所有文件的路径,包含子文件夹

    C++读取文件夹中所有文件的路径,包含子文件夹 C++实现指定文件夹的路径,获取该路径下所有文件的路径,含子文件夹的文件,为了实现跨平台编译,最后会给出Window和Linux的完成程序: [1]下面 ...

  10. Java文件操作:文件夹中搜索文件

    在文件夹中搜索文件,找到的话将文件的绝对路径列表返回 /*** 递归查找文件* @param baseDirName 查找的文件夹路径* @param targetFileName 需要查找的文件名* ...

最新文章

  1. 报名丨2019全球AI文创大赛启动仪式邀您参加!
  2. 一些推荐系统包的推荐
  3. 2015数据中心宕机20%是由DDoS攻击引起
  4. 页面生成周期中的两个Application池的详情小弟了解
  5. android:background=@color/white [create file color.xml at res/values/]
  6. 亲爱的,我是一条Linux运维技术学习路径呀。
  7. 【Boost】boost库中thread多线程详解9——thread_specific_ptr线程局部存储
  8. 数据库SQL语言从入门到精通--Part 4--SQL语言中的模式、基本表、视图
  9. Java安全(一) : java类 | 反射
  10. NAT (PAT)地址转换技术(讲解+配置)
  11. 活在贫困线之下的开源软件项目——开源的可持续性斗争
  12. python程序中的内存泄露(matplotlib内存泄漏)
  13. DataX不支持Mysql8.x
  14. idea怎么提交到dev分支_idea中新建git分支,并提交到远程github
  15. [微信小程序] js变量名称写活
  16. android横向铺满屏幕,解决安卓自定义Dialog不能水平铺满屏幕
  17. 有道云笔记的敏捷开发实践——好文收藏吧!【转】
  18. 【agora】 Agora Media SDK : aut transport
  19. CososCreator (Android)-AppLovin MAX 广告聚合平台接入+Firebase统计
  20. 【CSS】静态螺纹进度条和静态流程布局

热门文章

  1. ORACLE 包内的存储过程的动态sql
  2. 一个简单的二层系统分析全程
  3. 【笔记】Android.mk编译apk不生成ota包或者odex包
  4. 基于 iso 镜像构建 yum 本地源
  5. python如何处理inp文件_python 之文件操作
  6. python判断回文字符串不考虑空格符号大小写_检查带有忽略的标点符号、空格和cas的回文文本...
  7. android判断循环,android kotlin学习之路 kotlin中的分支判断与循环判断(2)
  8. java 设置启动参数设置_1.java程序启动参数配置
  9. WPF 引用 ttf文件
  10. 设计【SPFA】【差分约束】