Pythonで計算結果を保存するときに、現在の日付や時刻を元にフォルダを作成して、そこに結果を保存できると便利ですよね。この記事ではPythonで現在の時刻や日付を簡単に取り扱う事の出来るdatetimeライブラリにについて紹介します。
datetimeとは?
datetimeを使うと、Pythonのプログラム実行時の現在の日付や時刻といった情報を簡単に取得することが出来ます。次のプログラムを見てください。
import datetime
now = datetime.datetime.now()
print("年:", now.year)
print("月:", now.month)
print("日:", now.day)
print("時間", now.hour)
print("分", now.minute)
print("秒", now.second)
current_time = now.strftime("%Y-%m-%d-%H-%M")
print(current_time)
このようにdatetime.datetime.nowを呼ぶことで、プログラム実行時の現在の時刻情報を取得することが出来ます。nowには年、月、日、時間、分、秒といった情報が入っています。例えば、年にアクセスするにはnow.yearといった具合ですね。
このままでは個別に情報をつなぎ合わせないといけないので、少し面倒です。そこで、年-月-日-時間-分などをつなぎ合わせた文字列を取得するにはstrftimeという関数を使います。すると”–“で繋がった年月日などの文字列情報が取得できます。このプログラムの実行結果は次の通りです。
実行結果
年: 2020
月: 11
日: 5
時間 13
分 1
秒 44
2020-11-05-13-01
datetimeの実際
実際、どんな使われ方をするのか見ていきましょう。datetimeモジュールは現在の時刻の文字列情報を取得できるため、例えば、osモジュールと組み合わせて、現在の時刻に基づいた計算結果の保存フォルダを作成できます。次のプログラムを見てください。
import datetime
import os
now = datetime.datetime.now()
current_time = now.strftime("%Y-%m-%d-%H-%M")
dir_for_output = "./output/" + current_time
os.makedirs(dir_for_output, exist_ok=True)
このプログラムではまず現在の年月日、時刻を取得し、current_timeに文字列として格納しています。次に、dir_for_outputではカレントディレクトリの下に./outputというパスを指定し、その下に更に先ほどのパスを加えています。
最後にos.makedirsに渡して、outputフォルダの下に現在の日付、時刻に基づいたフォルダを作成しています。こうしておけば、計算結果を実行するごとに別のディレクトリに保存できますので、上書きされません。
まとめ
この記事ではdatetimeモジュールについて解説しました。以下に学習内容を纏めておきます。
import datetime
# 現在の時刻を取得
now = datetime.datetime.now()
# 個別にアクセス
year = now.year
month = now.month
day = now.day
# 文字列として取得
current_time = now.strftime("%Y-%m-%d-%H-%M")
Tips: datetime + pathlibで同じことをやってみる
osモジュールと同じような機能のあるpathlibでも同じことをやってみましょう。次のプログラムを見てください。
import pathlib
import datetime
now = datetime.datetime.now()
current_time = now.strftime("%Y-%m-%d-%H-%M")
p_file = pathlib.Path("./output/" + current_time)
if not p_file.exists():
p_file.mkdir()
詳しくはpathlibの紹介で改めて記事を書きたいと思いますが、7行目でcurrent_timeを元に作成したパスのPathオブジェクトを作成します。そして、もしそのパスが存在しない場合はディレクトリを作成するといった手順です。pathlibも非常に使い勝手の良いライブラリですので、お好きな方を使われると良いと思います。
最新記事 by t-tetsuya (全て見る)
- 【GPyOpt】Python x ベイズ最適化の基本をマスターしよう - 2020年12月29日
- Python print関数の基本の使い方 - 2020年12月10日
- Python関数の書き方の基本 - 2020年12月1日
・どんなシーンで使えるか?
について理解することができます。