视频合并时使用python批量修改文件名的方法

yipeiwu_com6年前Python基础

不知道大家有没有遇到这样的情况,比如视频合并时文件名没有按照正常顺序排列,像这样

  

可见,文件名排序是乱的。这个样子合并出来的视频一定也是乱的。所以得想办法把文件名修改一下,让软件读取出正确的顺序。闲话少说,上代码。

"""
注意:一、文件名除去扩展名必须以 '_' + 数字 结尾。
 二、convert.py 放在文件目录。
 三、目录中不能有多余文件
主要算法:
根据最大数字的位数添加0
例如,如果最大数字为123,那么位数为3位,
 1就要变成001、2变成002、23变成023,依次...
"""

import os

li = []
new_li = [] # 新文件名
null_li = [] # 不标准的文件名
filenames = os.listdir('./')

# 得到数字的最大位数
for filename in filenames:
 tmp = os.path.splitext(filename)[0] # 得到文件名
 if('_' in tmp): # 找到数字前的标志
 num = tmp.split('_')[-1]
 li.append(num)
 else:
 null_li.append(filename)
max_len = len(max(li, key=len))
# ~ print(max_len)

# 新文件名
for filename in filenames:
 name = os.path.splitext(filename)[:-1] # 得到文件名
 name = '_'.join(name)
 ext = os.path.splitext(filename)[-1] # 得到扩展名
 if('_' in name): # 找到数字前的标志
 name1 = name.split('_')[:-1]
 name1 = '_'.join(name1) #文件名
 num = name.split('_')[-1]
 quantity = max_len - len(num)
 name2 = '0' * quantity + num #数字名
 filename = name1 + '_' + name2 + ext
 new_li.append(filename)
# ~ new_li.sort()
# ~ print(filenames)
# ~ print('\n')
# ~ print(new_li)

# 检查是否有不规范的文件名
if(len(filenames)-1 != len(new_li)):
 null_li.remove('convert.py')
 null_li = '、'.join(null_li)
 print("error: \""+ null_li + "\" 不以 '_' + 数字 结尾。")
 exit()

# 修改文件名
i = 0
for oldname in filenames:
 if (oldname != 'convert.py'):
 os.rename(oldname,new_li[i])
 print(oldname,'======>',new_li[i])
 i+=1

其中注意事项,在上述代码里也说明了。运行成功后,再次查看


可见,视频已经按照顺序排列好了。

总结

以上所述是小编给大家介绍的视频合并时使用python批量修改文件名的方,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对【听图阁-专注于Python设计】网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

Ubuntu 下 vim 搭建python 环境 配置

1. 安装完整的vim # apt-get install vim-gnome 2. 安装ctags,ctags用于支持taglist,必需! # apt-get instal...

python根据文章标题内容自动生成摘要的实例

python根据文章标题内容自动生成摘要的实例

text.py title = '智能金融起锚:文因、数库、通联瞄准的kensho革命' text = '''2015年9月13日,39岁的鲍捷乘上从硅谷至北京的飞机,开启了他心中的...

Python实现提取谷歌音乐搜索结果的方法

本文实例讲述了Python实现提取谷歌音乐搜索结果的方法。分享给大家供大家参考。具体如下: Python的简单脚本,用于提取谷歌音乐搜索页面中的歌曲信息,包括歌曲名,作者,专辑名,现在链...

python中的global关键字的使用方法

摘要 global 标志实际上是为了提示 python 解释器,表明被其修饰的变量是全局变量。这样解释器就可以从当前空间 (current scope) 中读写相应变量...

python结合selenium获取XX省交通违章数据的实现思路及代码

python结合selenium获取XX省交通违章数据的实现思路及代码

前言:   目前在研究易信公众号,想给公众号增加一个获取个人交通违章的查询菜单,通过点击返回查询数据。以下是实施过程。 一、首先,用火狐浏览器打开XX省交管网,分析页面信息:   可以...