-3

処理する必要がある一連のファイル名があり、ファイル名に年とユリウス日が含まれていますA1998237.tif

これらのファイルを名前に基づいて月ごと (たとえば、1 月、2 月など) にグループ化するにはどうすればよいですか?

これは事前手順であり、この後、このファイルをメモリに読み込みます。次に、この各ファイルに関連付けられた行列の平均をとって、月ごとの行列を作成します。

4

1 に答える 1

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_month0 から始まるインデックスを使用して、1 か月ごとにリストを格納します。1 月は 0 などです。

これは、ファイル名が常に1文字で始まり、その後に年 + ユリウス暦、拡張子が続くことを前提としています。これらの仮定が正しくない場合は、ファイル名にどのようなパターンがあるかについて、より多くの情報を提供する必要があります。

サンプル ファイル名のデモ:

>>> 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)

これは、「8 月」バケットにファイルされますfiles_by_month[7]

于 2014-03-28T17:30:30.343 に答える