Re: [請問] 自動建立資料夾歸檔軟體

看板EZsoft (小軟體)作者 (lun)時間17年前 (2008/08/08 20:38), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串5/5 (看更多)
照原PO第一篇的例子,在Python裡面可以這樣做: import re li = ['1_1_1_1 - 20080807.a', '1_1_1_1 - 20080807.b', '1_1_1_1 - 20080807.c', '1_1_1_1 - 20080808.a', '1_1_1_1 - 20080808.b', '1_1_1_1 - 20080808.c', '1_1_1_2 - 20080807.a', '1_1_1_2 - 20080807.b', '1_1_1_2 - 20080807.c', '1_1_1_2 - 20080808.a', '1_1_1_2 - 20080808.b', '1_1_1_2 - 20080808.c'] #制定規則 pattern = re.compile('^(\d*_\d*_\d*_\d*)(.*)') d = {} for item in li: group = pattern.search(item).groups() if group[0] not in d.keys(): d[group[0]] = [] d[group[0]].append(item) d 裡面的結果會是這個樣子, d['1_1_1_1']: 1_1_1_1 - 20080807.a 1_1_1_1 - 20080807.b 1_1_1_1 - 20080807.c 1_1_1_1 - 20080808.a 1_1_1_1 - 20080808.b 1_1_1_1 - 20080808.c d['1_1_1_2']: 1_1_1_2 - 20080807.a 1_1_1_2 - 20080807.b 1_1_1_2 - 20080807.c 1_1_1_2 - 20080808.a 1_1_1_2 - 20080808.b 1_1_1_2 - 20080808.c d 的 key 就是資料夾名稱, value 則是檔案名稱。 -------------------------------------------------------------------------- 獲得資料夾內容: import os os.listdir('C:\\') 或是 import os import glob os.chdir('C:\\') glob.glob('*') 會傳回C巢目錄下的檔案,glob可以指定檔名內容,比如說你要找MP3檔案, 你應該打 glob.glob('*.mp3') 建立資料夾 import os os.mkdir(path) 移動檔案: import shutil #move(原路徑, 新路徑) shutil.move(r'C:\123.txt', r'D:\) ----------------------------------------------------------------------------- 所以真正的作法應該是, import os import shutil import re #獲得資料夾內容 li = os.listdir('C:\\') #制定規則 pattern = re.compile('^(\d*_\d*_\d*_\d*)(.*)') #找出index,如1_1_1_1、1_1_1_2 for item in li: group = pattern.search(item).groups() if group[0] not in d.keys(): d[group[0]] = [] d[group[0]].append(item) for index in d.keys(): os.mkdir('C:\\' + index) for name in d[index]: shutil.move('C:\\' + name, 'C:\\' + index) 如此一來,方可完成,當然這只是一個簡單的範例, 如果想要有彈性點,還要制定更好的規則 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.127.45.34

08/11 09:57, , 1F
頗高段...還在理解中 :p 還是很感謝 辛苦了
08/11 09:57, 1F
文章代碼(AID): #18d3u-S1 (EZsoft)
文章代碼(AID): #18d3u-S1 (EZsoft)