用python編寫一個(gè)批量修改文件名的小程序

1、問題描述:

原有的視頻文件按序排列,但是文件名沒有對內(nèi)容的說明,如下圖所示:

原視頻文件列表.jpg

想將其批量修改成如下文件名:

圖2:要改成的文件名.jpg

最終想要的效果:


ok.jpg

不想一個(gè)一個(gè)的改, 花了半天時(shí)間,寫了個(gè)python小程序,是不是有點(diǎn)得不償失?

記錄一下實(shí)現(xiàn)的方法,希望能幫到遇到同樣問題的你。

2 解決思路

流程圖.jpg

3 python代碼

change_file_name.py

#coding:utf-8
import os
import re
#----功能說明:批量修改文件文件名----
#--------------2017.11.19------------
# os模塊用來操作文件夾,文件名;
# re模塊用于引入正則表達(dá)式,提取文件命中的特殊信息
movie_name = os.listdir('./movies')
# 文件夾movies中存放多個(gè)視頻文件,os.listdir獲取所有文件名列表。

for temp in movie_name:
    # 逐一處理movies文件夾下的文件。
    print "當(dāng)前修改的文件名: "+temp
    # 測試用,顯示當(dāng)前文件名;
    m = re.search('\((\d+)\)', temp)
    num = m.group(1)
    print num
    # 分析原來文件名的特點(diǎn),AUTOCAD2004 (1).rm,AUTOCAD2004 (2).rm,AUTOCAD2004 (3).rm,……
    # 文件順序在每個(gè)括號里:(1),(2),(3),……我們用re.search('\((\d+)\)', temp)提取數(shù)字;


    f = file('names.txt')
    # names.txt中存儲(chǔ)了最終需要替換的文件名。
    lines = f.readlines()
    # 讀取names.txt中的內(nèi)容;
    new_name = ''
    
    for line in lines:
        data = line.split()
        num_1 = data[0]
        # 逐一分析names.txt中的每一行,提取每一行的行號,用于匹配
        if num_1 == num:
            new_name=data[1]
            f.close()
            print "old name="+temp
            print "new name="+new_name
            break
            # 如果能匹配上,即找到了要替換成的文件名,退出循環(huán);否則繼續(xù)找。

            
    if new_name <> '':
        os.rename('./movies/'+temp,'movies/'+num_1+' '+new_name+'.rm')
        new_name = ''
        # 對于要修改的當(dāng)前文件,如果找到新文件名,就替換;

4 運(yùn)行

新建movies文件夾,用于存放視頻文件;新建names.txt,存放文件名列表,如上圖2所示;將change_file_name.py與movies和names.txt放于同一目錄下:


文件存放位置.jpg

雙擊change_file_name.py,修改成功!


success.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容