現在の時刻からフォルダを作れる Python datetime 基本の使い方

 Pythonで計算結果を保存するときに、現在の日付や時刻を元にフォルダを作成して、そこに結果を保存できると便利ですよね。この記事ではPythonで現在の時刻や日付を簡単に取り扱う事の出来るdatetimeライブラリにについて紹介します。

この記事を読むことであなたは
・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も非常に使い勝手の良いライブラリですので、お好きな方を使われると良いと思います。

 

The following two tabs change content below.
メーカーR&D職 研究開発業務にPythonを使用。 Udemy講師およびKindleで電子書籍を出版。 Udemyでは受講生 約15,000名 Pythonの適用範囲: データ分析、画像処理、統計解析、並列計算、流体解析、深層学習