使用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 25 Python
Python中的descriptor描述器简明使用指南
Jun 02 Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 Python
Python实现生成随机日期字符串的方法示例
Dec 25 Python
python dlib人脸识别代码实例
Apr 04 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
详解python播放音频的三种方法
Sep 23 Python
Python autoescape标签用法解析
Jan 17 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
Python基础之元组与文件知识总结
May 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
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Javascript 面向对象 重载
2010/05/13 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
Cython 三分钟入门教程
2009/09/17 Python
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
利用python求相邻数的方法示例
2017/08/18 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
python实现按行分割文件
2019/07/22 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python django中8000端口被占用的解决
2019/12/17 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
个人实用的自我评价范文
2013/11/23 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
人事任命书格式
2014/06/05 职场文书
天那边观后感
2015/06/09 职场文书
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL