不知道大家有沒有遇到這樣的情況,比如視頻合并時文件名沒有按照正常順序排列,像這樣
可見,文件名排序是亂的。這個樣子合并出來的視頻一定也是亂的。所以得想辦法把文件名修改一下,讓軟件讀取出正確的順序。閑話少說,上代碼。
"""
注意:一、文件名除去擴展名必須以 '_' + 數字 結尾。
?二、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批量修改文件名的方,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

