使用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除法运算小技巧
Apr 05 Python
Python中decorator使用实例
Apr 14 Python
详细解读Python的web.py框架下的application.py模块
May 02 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
Python表示矩阵的方法分析
May 26 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
Python实现FTP文件传输的实例
Jul 07 Python
如何用python绘制雷达图
Apr 24 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解决的一个栈的面试题
2014/07/02 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
js前端导出Excel的方法
2017/11/01 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python中的pack和unpack的使用
2018/03/12 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
python如何实现内容写在图片上
2018/03/23 Python
Python跳出多重循环的方法示例
2019/07/03 Python
tensorflow 模型权重导出实例
2020/01/24 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
物业保安员岗位职责
2014/03/14 职场文书
医院义诊活动总结
2014/07/04 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
最美乡村教师观后感
2015/06/11 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
mysql创建存储过程及函数详解
2021/12/04 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL