最近在弄驗證碼識别小工具,下了一大堆資料集,要給每個目錄分類改名,作為一個以程式設計為信仰的人,怎麼能手動一個一個重命名呢?!為此我想起了學習Unix時的shell程式設計。。搗鼓了半天,一會是$忘記添加,一會是數組的奇葩表達。。總而言之真的用不來shell程式設計,最後想了想還是python以腳本語言著稱,寫這種簡單的系統腳本應該是易如反掌吧~說幹就幹,我拿出了壓箱底的Python CookBook,這真是本好書啊,很多python的奇淫巧技都能在這本書上找到較為系統規範的講解。下面就介紹一下我是怎麼解決問題的了。
下載下傳的圖檔分類大概是這樣的

每個檔案夾代表一類圖檔,比如說Sample037對應字母a等等。
我的目的就是将每個檔案夾名稱改為對應的字母,說起來簡單做起來…如果你熟悉的話還是很簡單。。這裡主要利用了python的subprocess庫,
import subprocess
subprocess.call(['netstat','-a'])
像這樣就能執行一些系統調用,函數會将指令傳給底層的os.execve()系統調用。如果想由shell終端來解釋指令,可以加上shell=True參數,但是如果如果傳入的指令是依賴于使用者輸入德華,這樣做有風險,可能會讓惡意使用者有可乘之機。
import subprocess
subprocess.call(['netstat','-a'],shell=True)
最後簡單的調用mv指令就能很快的将檔案夾批量改名。需要注意Windows系統下該檔案夾名指令為ren。
alphas = "abcdefghijklmnopqrstuvwxyz"
for i in range(,):
dirName = r'我的目錄\Sample0'+str(i)
newName = str(alphas[i-])
print ("oldName:%s,newName : %s"%(dirName,newName))
subprocess.call(['mv',dirName,newName],shell=True)
最後就完成了目的~
小結
雖然做的事情很簡單,但是這讓我對python友善快捷的特性有了更深的認識,再也不想看到shell腳本了。。。