我从窗户里探头往外看,嘿!春天果然到来了。看,外面嫩绿的小草像动画片里的那样,慢慢探出头来。再看,那平坦的草地里,星星点点的眨着眼睛的是什么?哦!那是可爱的小花,还有小虫在花瓣里钻来钻去呢?嘻,原来是童话故事里睡在花瓣里的拇指姑娘啊!再看看,那干枯已久的柳树也伸出了嫩绿的手,轻轻地走来了美丽的春姑娘!
不知道大家有没有遇到这样的情况,比如视频合并时文件名没有按照正常顺序排列,像这样
可见,文件名排序是乱的。这个样子合并出来的视频一定也是乱的。所以得想办法把文件名修改一下,让软件读取出正确的顺序。闲话少说,上代码。
"""
注意:一、文件名除去扩展名必须以 '_' + 数字 结尾。
二、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批量修改文件名的方法内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!