使用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中的filter和lambda函数的使用
Apr 07 Python
python修改字典内key对应值的方法
Jul 11 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
Python装饰器原理与基本用法分析
Jan 07 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
python爬取微博评论的实例讲解
Jan 15 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
Python之Sklearn使用入门教程
Feb 19 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
php5 and xml示例
2006/11/22 PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
laydate时间日历插件使用方法详解
2018/11/14 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
Python入门教程之if语句的用法
2015/05/14 Python
Python学习思维导图(必看篇)
2017/06/26 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
python实现文件的分割与合并
2019/08/29 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
工商管理专业职业生涯规划
2014/01/01 职场文书
烹调加工管理制度
2014/02/04 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
努力学习保证书
2015/02/26 职场文书
升学宴祝酒词
2015/08/11 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书