【Python】出力するデータのファイル名を自動でユニークにする方法(上書きしない。年月日時秒を使う)

python-Prevent Override by Unique File Name Python
記事内に広告が含まれていることがあります。

pandasモジュールのto_csvメソッドでファイル名を指定して出力するときに、ファイル名に文字列を指定していると古いファイルが上書きされてなくなってしまいます。

この出力時のファイルの上書きを防ぐために、ファイル名に実行した年月日時秒を含めることで、ファイルを個別に出力していく方法について実例を用いてわかりやすく解説しています。

ファイル名を自動でユニークにする手順

出力するデータのファイル名を自動でユニークにするには、以下のモジュールとメソッドを使用します。

①datetimeモジュール
 ②nowメソッド
 ③strftimeメソッド
④format関数

ファイル名を自動でユニークにする方法コピペ用

ファイル名を自動でユニークにするためのコピペ用コードは以下になります。

import datetime as dt
now = dt.datetime.now()

time = now.strftime('%Y%m%d-%H%M%S')

df.to_csv('~/desktop/output_{}.csv'.format(time), index=False, encoding='utf_8_sig')

これで書き出しを実行すれば、都度個別のファイルが生成されます。

各コードの中身解説

各処理の内容は以下のようになっています。

datetimeのnowメソッド

datetimeのnowメソッドで現在の時刻を求めています。

import datetime as dt
now = dt.datetime.now()

now

#出力
# datetime.datetime(2020, 3, 27, 19, 16, 41, 332644)

出力結果のdatetime.datetimeというのは型の種類です。

datetimeのstrftimeメソッド

datetimeのstrftimeメソッドで日付の書式を指定しています。

time = now.strftime('%Y%m%d-%H%M%S')
time

#出力
#'20200327-191641'

strftimeメソッドや指定子についての詳しい説明は以下をご参考ください。

format関数

format関数を使って、ファイル名を変数で指定するようにしています。

time = now.strftime('%Y%m%d-%H%M%S')

'output_{}.csv'.format(time)

#出力
# 'output_20200327-193206.csv'

format関数についての詳しい説明は以下をご参考ください。

これでわかった!format関数の使い方まとめ。実例でわかりやすく解説

to_csvメソッド

最後に、to_csvメソッドでcsvファイルとして出力しています。

df.to_csv('~/desktop/output_{}.csv'.format(time), index=False, encoding='utf_8_sig')

to_csvメソッドにについての詳しい説明は以下をご参考ください。

タイトルとURLをコピーしました