链条传动

砥砺前行,不忘初心!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

这两天没什么事干,就从网上下载了很多视频(电视剧、动漫等),但从网上下载下来后,发现好多视频的名称都很长,看着就烦。

对于单个视频,当然可以手动去修改其名称,但要是有很多视频呢?也要一个一个修改?

 

比如说一部电视剧,它每集的命名规则是相似的,这样就可以通过程序来批量进行修改。

可以通过程序去掉视频名称中多余的部分,或者直接对视频进行重命名。

 

下面是我写的程序,都有注释,就不再一一解释了。

1 #!/usr/bin/env python
2 # -*- encoding: utf-8 -*-
3 
4 from Tkinter import *
5 import tkMessageBox
6 import tkFileDialog
7 import os
声明和导入库函数
 1 root = Tk()   #实例化一个TK对象
 2 
 3 root.title('文件批量工具')   #设置窗口标题
 4 #root.geometry('500x300+800+200')   #设置窗口大小和窗口位置(格式:大小(例:500x200)、位置(例:+800+200))
 5 
 6 '''
 7 创建组件
 8 '''
 9 Label(root,text='内容:').grid()   #创建标签(Lable)并显示(grid)-----设置标签信息为'关键词',并指定显示在root窗口上
10 entry1 = Entry(root)
11 entry1.grid(row=0,column=1)    #创建并显示输入框---grid:网格方式布局显示,row--行,column---列(默认都从0开始)
12 
13 
14 Button(root,text='选择文件夹',command=listdir).grid(row=0,column=2)    #创建并显示按钮(显示在root窗口,并设置按钮显示内容
15                                                                     # 为'选择文件夹',使用command绑定事件函数listdir )
16 
17 Button(root,text='删除多余部分',command=update).grid(row=0,column=3)
18 
19 Button(root,text='重命名',command=rename).grid(row=0,column=4)
20 
21 listbox = Listbox(root,width=70)
22 listbox.grid(row=1,column=0,columnspan=5)    #设置并显示列表框-----columnspan:合并多列   rowspan:合并多行
23 
24 
25 mainloop()   #显示窗口
布局
 1 #选择文件夹并显示文件夹下的内容
 2 def listdir():
 3     listbox.delete(0, END)   #清空列表框
 4     global path
 5     path = tkFileDialog.askdirectory()   #弹出文件夹选择框
 6     filelist = os.listdir(path)   #获取文件夹下的内容
 7     #在列表框进行展示
 8     for file in filelist:
 9         file_path = os.path.join(path,file)
10         listbox.insert(END,file_path)
11 
12 #删除文件名中多余的部分
13 def update():
14     try:
15         #清空列表框内容
16         listbox.delete(0,END)
17         #获取文件夹小内容列表
18         filelist = os.listdir(path)
19         #对文件列表进行遍历,修改文件名
20         for file in filelist:
21             # 获取文件名、文件类型、文件路径
22             file_name = os.path.splitext(file)[0]
23             file_type = os.path.splitext(file)[1]
24             file_path = os.path.join(path, file)
25 
26             del_str = entry1.get().strip()   #从输入框获取输入内容并去掉首尾空格
27             if del_str in file_name:
28                 new_file_name = file_name.replace(del_str, '')
29                 new_file_type = file_type
30                 new_file = new_file_name + new_file_type
31                 new_file_path = os.path.join(path, new_file)
32 
33                 os.rename(file_path, new_file_path)
34                 listbox.insert(END, new_file_path)
35             else:
36                listbox.insert(END, file_path)
37     except:
38         tkMessageBox.showinfo('提示', '请先选择文件夹')  # 显示信息提示(参数分别为标题和内容)
39         return
40 
41 #重命名文件
42 def rename():
43     try:
44         listbox.delete(0, END)
45 
46         filelist = os.listdir(path)
47 
48         count = 1
49         for file in filelist:
50             # 获取文件名、文件类型
51             file_name = os.path.splitext(file)[0]
52             file_type = os.path.splitext(file)[1]
53             file_path = os.path.join(path, file)
54 
55             add_str = entry1.get().strip()
56             if add_str:
57                 new_file_name = add_str + '%02d'%count
58                 new_file_type = file_type
59                 new_file = new_file_name + new_file_type
60                 new_file_path = os.path.join(path, new_file)
61 
62                 os.rename(file_path, new_file_path)
63                 listbox.insert(END, new_file_path)
64                 count += 1
65             else:
66                 listbox.insert(END, file_path)
67     except:
68         tkMessageBox.showinfo('提示', '请先选择文件夹')  # 显示信息提示(参数分别为标题和内容)
69         return
事件函数

 

posted on 2016-06-22 16:08  链条君  阅读(511)  评论(0编辑  收藏  举报