2012-07-10 56 views
2

該程序將文件夾中的每個文件分類到具有特定日期的新文件夾中。 大多數文件名遵循以下模式:如何將選定的文件移動到文件夾中?

20120509_1324654_house.jpg 
20120509_1324654_roof.jpg 

但也可能有一些文件命名是這樣的:

20120509_cat.jpg 
20120509_cat.txt 
20120509_dog.jpg 
20120509_dog.txt 

這些都是我想有一個文件夾「動物」的文件,但我不知道如何編輯我的代碼,以便程序可以創建文件夾並將這些文件放在那裏。

這是我到現在爲止:

from zipfile import ZipFile 
import glob 
import datetime 
import os 
import re 
from collections import defaultdict 
from shutil import copyfile 
pat = r'(\d+)(?:_\d+)?_(\w+?)[\._].*' 
from collections import defaultdict 

src = 'D:/Testing/src/' 

or name in glob.glob('D:/Testing/src/*'): 
    print name 

dict_date = defaultdict(lambda : defaultdict(list)) 
for fil in os.listdir(src): 
    if os.path.isfile(os.path.join(src, fil)): 
     date, subFolder = re.match(pat, fil).groups() 
     dict_date[date][subFolder].append(fil) 

for date in dict_date: 
     for subFolder in dict_date[date]: 
      try: 
       os.makedirs(os.path.join(src, date, subFolder)) 
      except os.error: 
       pass 
      for fil in dict_date[date][subFolder]: 
       copyfile(os.path.join(src, fil), os.path.join(src, date, subFolder, fil)) 

for date in dict_date: 
    with ZipFile(os.path.join(src, '{0}.zip'.format(date)), 'w') as myzip: 
     for subFolder in dict_date[date]: 
      for fil in os.listdir(os.path.join(src, date, subFolder)): 
       if not fil.endswith('.zip'): 
        myzip.write(os.path.join(src, date, subFolder, fil)) 



directory = src 
os.chdir(directory) 
files = glob.glob('*.txt') 
for filename in files: 
    os.unlink(filename) 

files2 = glob.glob('*.png') 
for filename in files2: 
    os.unlink(filename) 

print ("\n follows files are now in the folder \n") 

for name in glob.glob('D:/Testing/src/*'): 
    print name 

回答

0

要創建文件夾使用os.mkdir例如創建一個名爲動物的文件夾使用os.mkdir("animals")

相關問題