• Python批量修改文件名


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

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

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

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

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

    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
    事件函数
  • 相关阅读:
    ZKW费用流修正
    BZOJ 1060 [ZJOI2007]时态同步
    BZOJ 1059 [ZJOI2007]矩阵游戏
    腾讯WEB前端开发面试经历,一面二面HR面,面面不到!
    亲历腾讯WEB前端开发三轮面试经历及面试题
    2015大型互联网公司校招都开始了,薪资你准备好了嘛?
    10款最好的 Bootstrap 3.0 免费主题和模板
    python3之urllib基础
    python3下应用requests
    python心得二(编码问题)
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5607514.html
Copyright © 2020-2023  润新知