使用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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
Python数据类型学习笔记
Jan 13 Python
python之Socket网络编程详解
Sep 29 Python
DataFrame中的object转换成float的方法
Apr 10 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
解决Python使用列表副本的问题
Dec 19 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
Django REST 异常处理详解
Jul 15 Python
详解python 内存优化
Aug 17 Python
Python数据模型与Python对象模型的相关总结
Jan 26 Python
Flask中jinja2的继承实现方法及实例
Mar 03 Python
python pyhs2 的安装操作
Apr 07 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
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
python使用win32com库播放mp3文件的方法
2015/05/30 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
django的model操作汇整详解
2019/07/26 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
Python request中文乱码问题解决方案
2020/09/17 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
外企C语言笔试题
2013/11/10 面试题
2015毕业生简历自我评价
2015/03/02 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
交通事故被告代理词
2015/05/23 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python