Pythonでログ出力ファイルを作成するときに、ファイル名に現在時刻を入れたときのメモです。
あわせて、csv出力に関するメモも記載しておきます。
#現在日時の取得
datetime.datetime.now()
で現在日時を取得できます。
print(datetime.datetime.now())
>>2019-06-22 09:44:54.569669
#サンプル
ファイル名に現在時刻を入れて作成するサンプルです。
datetime.strftime()
で日付フォーマット指定します。
now = datetime.datetime.now()
filename = './output/log_' + now.strftime('%Y%m%d_%H%M%S') + '.csv'
f = open(filename, 'w')
writer = csv.writer(f, lineterminator='\n')
実行すると、log_20190622_094828.csv
のようなファイル名で作成されます。
##日付フォーマットの指定
ついでなので、C#のDateTime、DartのDateFormatのフォーマット指定と比較します。
フォーマット | pyhton | C# | Dart |
---|---|---|---|
西暦(4桁) | %Y | yyyy | yyyy |
西暦(2桁) | %y | yy | yy |
月(2桁) | %m | MM | MM |
日(2桁) | %d | dd | dd |
時(2桁) | %H | HH | HH |
分(2桁) | %M | mm | mm |
秒(2桁) | %S | ss | ss |
月と分の大文字、小文字が逆なので、C#からPythonに移行する人はちょと注意が必要ですね。
#csvファイル出力
writer.writerow(リスト配列)
を使います。
#リスト配列はそのまま、指定する
a = [1,2,3]
writer.writerow(a)
>>1,2,3
#Numpy配列は、tolist()でリスト配列に変換してから
b = np.array([10, 20, 30])
writer.writerow(b.tolist())
>>10,20,30
#文字列などは、[]でリスト配列にしてから
writer.writerow(["日付",now])
writer.writerow(["日付",now.strftime('%Y/%m/%d'),now.strftime('%H:%M:%S')])
>>日付,2019-06-22 11:38:23.506582
>>日付,2019/06/22,11:38:23
datetime形式をそのまま出力したときは、エクセルで開いたときにキレイじゃないです。
(エクセルのバージョンにもよるかも知れないですが。)