2014-03-28 47 views
-3

我有一系列我需要處理的文件名,並且它們的文件名中包含年份和儒略日,例如, A1998237.tifPython - 將朱利安日期轉換爲月

如何根據月份(例如Jan,Feb ...)根據其名稱對這些文件進行分組?

這是一個預過程,在此之後,我將把這些文件讀入內存。然後,我將採用與每個文件相關的矩陣的平均值來生成每月矩陣。

回答

1

解析出儒略日,每個文件名文件轉換成字典當月:

from datetime import datetime 
import os.path 

# months from 0 to 11 
files_by_month = [[] for _ in range(12)] 

for filename in filenames: 
    dt = datetime.strptime(os.path.splitext(filename)[0][1:], '%Y%j') 
    files_by_month[dt.month - 1].append(filename) 

files_by_month使用基於0的索引存儲每月的列表;一月是0等

這假定文件名總是以一個字母開頭,後面是年份+ julian年份日,然後是擴展名。如果這些假設不正確,則需要提供更多關於文件名中有哪些模式的信息。

演示爲您的樣品文件名:

>>> from datetime import datetime 
>>> import os.path 
>>> filename = 'A1998237.tif' 
>>> datetime.strptime(os.path.splitext(filename)[0][1:], '%Y%j') 
datetime.datetime(1998, 8, 25, 0, 0) 

這將在 '八一' 鬥,files_by_month[7]備案。

+0

感謝您的回覆。我花了一段時間纔得到這個正確運行。我必須將datetime.strptime更改爲time.strptime。看看它從這[後](http://stackoverflow.com/questions/12070193/why-is-datetime-strptime-not-working-in-this-simple-example) – FlyingMGET

+0

如何保存後的路徑分組? – FlyingMGET

+0

insert'os.path.join(directoryname,filename)'; [''os.listdir()'僅列出相對名稱](http://stackoverflow.com/questions/15535188/no-such-file-or-directory-while-trying-to-read-files-in-a-目錄中的Python)。 –

相關問題