Edited at

Pythonでファイル名に現在時刻を付ける【初心者向け】

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のフォーマット指定と比較します。

フォーマット
pyhton
C#

西暦(4桁)
%Y
yyyy

西暦(2桁)
%y
yy

月(2桁)
%m
MM

日(2桁)
%d
dd

時(2桁)
%H
HH

分(2桁)
%M
mm

秒(2桁)
%S
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形式をそのまま出力したときは、エクセルで開いたときにキレイじゃないです。

(エクセルのバージョンにもよるかも知れないですが。)

csv日付.JPG