Python 初學——V_Rename(第一個完整的python程序)


我在大一的時候就對python非常感興趣,就是一直沒有時間和機會去學習下,只是了解些表面的東西,今天早上整理電腦的時候發現文件夾里面的文件名是這樣子的,有點小不舒服,特別想去除重復的“Struts2”的字樣

001

我知道windows下直接用命令行就能重命名所有文件,網上也有很多方便的重命名軟件,記得在Mac下用過一個軟件叫NameChanger,特別好用。可是今天我確一點都不想用這些軟件,因為我想自己編程實現我想要的重命名功能。

使用python實現這個應該很簡單的,我想會在10行以內就能完成吧。記得我大一的時候有用過C語言做過文件管理,那時候最擔心的就是指針的問題了,python讓我都感覺不到指針的存在。

我開始的思路是使用正則來找出我要的文件然后替換關鍵字,后來發現正則有點牛刀小用了,就直接使用python的字符串操作來實現了。

我有兩個想法:

第一個是不使用函數,用一個for循環來解決,這樣的話代碼量將會最少。

結果讓我很驚訝python的實力了,真的代碼就只有10行!!!有點不敢相信啊,呵呵

import os

path = 'D:\\baiduyundownload\\struts2'
keyword = '_Struts2_'
rekeyword = '_'

all_files = os.listdir(path)
for filename in all_files:
    if os.path.isfile(path + '\\' + filename) and filename.find(keyword) != -1:
        os.rename(path + '\\' + filename,path+'\\'+filename.replace(keyword, rekeyword, 1))
 

第二的想法就是包裝成函數,分步來實現,

1. 得到帶有關鍵字文件名數組:findFiles(path, keyword)

2. 得到一個替換關鍵字后的文件名數組:replaceKeyword(files, keyword, rekeyword)

3. 根據前兩個數組重命名文件:renameFiles(files, refiles, path)

當然我還增加了異常捕獲提醒,總共代碼下來就翻了4倍了,呵呵

import os

path = 'D:\\baiduyundownload\\struts2'
keyword = '_Struts2_'
rekeyword = '_'

def getPath(path):
    if path.strip() != '':
        try:
            os.chdir(path)
        except os.error:
            print(path + ": No such dir...")
    else:
        path = os.getcwd()
    return path

def findFiles(path, keyword):
    all_files = os.listdir(path)
    
    files = []
    for filename in all_files:
        if os.path.isfile(path + '\\' + filename) and filename.find(keyword) != -1:
            files.append(filename)
    return files

def replaceKeyword(files, keyword, rekeyword):

    refiles = []
    for filename in files:
        refiles.append(filename.replace(keyword, rekeyword, 1))
    return refiles

def renameFiles(files, refiles, path):
    for i in range(len(files)):
        try:
            os.rename(path+'\\'+files[i],path+'\\'+refiles[i]);
        except os.error:
            print(path+'\\'+files[i] + ': wrong')
            
path = getPath(path)
files = findFiles(path, keyword)
refiles = replaceKeyword(files, keyword, rekeyword)
renameFiles(files, refiles, path)

兩個想法的最后實現效果是一致的啦:

002

去除重復的字符是不是看着很舒服啊,哈哈,我覺得實現的過程更是一種享受。越來越喜歡python了!!!




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM