処理する必要がある一連のファイル名があり、ファイル名に年とユリウス日が含まれていますA1998237.tif
。
これらのファイルを名前に基づいて月ごと (たとえば、1 月、2 月など) にグループ化するにはどうすればよいですか?
これは事前手順であり、この後、このファイルをメモリに読み込みます。次に、この各ファイルに関連付けられた行列の平均をとって、月ごとの行列を作成します。
処理する必要がある一連のファイル名があり、ファイル名に年とユリウス日が含まれていますA1998237.tif
。
これらのファイルを名前に基づいて月ごと (たとえば、1 月、2 月など) にグループ化するにはどうすればよいですか?
これは事前手順であり、この後、このファイルをメモリに読み込みます。次に、この各ファイルに関連付けられた行列の平均をとって、月ごとの行列を作成します。
ユリウス日を解析し、各ファイル名をその月の辞書にファイルします。
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 から始まるインデックスを使用して、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]
。