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


Posted in Python onMarch 24, 2020

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

 使用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批量修改文件名的方,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中使用Boolean操作符做真值测试实例
Jan 30 Python
Python利用前序和中序遍历结果重建二叉树的方法
Apr 27 Python
Python字符串拼接的几种方法整理
Aug 02 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 Python
python里glob模块知识点总结
Jan 05 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 Python
python 修改本地网络配置的方法
Aug 14 #Python
python django 原生sql 获取数据的例子
Aug 14 #Python
django 连接数据库 sqlite的例子
Aug 14 #Python
Python将主机名转换为IP地址的方法
Aug 14 #Python
Python利用WMI实现ping命令的例子
Aug 14 #Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 #Python
python for循环remove同一个list过程解析
Aug 14 #Python
You might like
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
html读出文本文件内容
2007/01/22 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
python使用cPickle模块序列化实例
2014/09/25 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
python实现Virginia无密钥解密
2019/03/20 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
用 python 进行微信好友信息分析
2020/11/28 Python
python中Mako库实例用法
2020/12/31 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
祖国在我心中演讲稿400字
2014/05/04 职场文书
群教班子对照检查材料
2014/08/26 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫
Win11开始菜单添加休眠选项
2022/04/19 数码科技