Python自動化の基礎として、日付を自動取得する考え方を身につける
Python自動化を学び始めると、ファイル操作やCSV処理、引数の受け取り、画面表示など、さまざまな基礎技術に出会います。その中でも非常によく使うのが「現在の日付を自動で取得する処理」です。最初は地味に見えるかもしれませんが、実際には多くの自動化で日付が重要な役割を持っています。
たとえば、今日の日付を使ってログファイル名を作る、バックアップファイルに日付を付ける、当日分のデータだけを処理する、日付によってフォルダを切り替える、レポート作成日を自動で記録する、といった使い方があります。つまり、日付の自動取得は、ただ現在の年月日を知るためだけではなく、「実行したその時点に応じて処理を変える」ための基礎機能です。
初心者の方は、最初は日付をコードに直接書いてしまいがちです。しかし、それでは翌日には古い情報になってしまい、毎回修正が必要になります。自動化の本来の価値は、毎回手で書き換えなくても、その時点に合った値をプログラムが自動で使ってくれることにあります。その意味で、日付の自動取得は自動化らしさを強く感じやすい題材です。
この記事では、Python自動化の基礎として、日付を自動取得する方法と、その使い方、注意点、安全な考え方までを、初心者向けに順を追ってわかりやすく解説します。単なる文法説明ではなく、自動化の現場でどう役立つかを意識しながら、例題やテンプレートを交えて詳しく説明します。
まず理解したい、なぜ日付の自動取得が重要なのか
毎日変わる情報を手で書き換えなくて済む
日付は毎日変わります。もしコードの中に 2026-10-21 のような固定の日付を書いていたら、次の日にはもう正しくありません。毎回手で修正する運用では、自動化の利点が薄れてしまいます。
そこで、プログラムを実行した瞬間の現在日付を自動で取得できるようにしておくと、コードを修正しなくても、その日の情報を使って処理できます。これは自動化において非常に大きな意味があります。毎回変わる値を、手ではなくプログラムに任せられるからです。
ファイル名、ログ、レポート、条件分岐など用途が広い
日付を自動取得する用途は非常に多いです。初心者の方は「今日の日付を表示するだけ」と思うかもしれませんが、実務ではもっと幅広く使われます。
- ログファイル名に日付を入れる
- バックアップファイルに作成日を付ける
- その日だけのデータを処理する
- 月ごとの集計対象を切り替える
- 画面やレポートに実行日を表示する
- 一定日数を超えた古いファイルを判定する
このように、日付は「表示するだけの情報」ではなく、処理の条件や整理ルールそのものに深く関わります。
Pythonで日付を取得する基本
datetime モジュールを使う
Pythonで現在の日付や時刻を扱うとき、最も基本になるのが datetime モジュールです。初心者の方は最初、名前が少し難しく見えるかもしれませんが、使い方自体はそれほど複雑ではありません。
現在の日時を取得する基本の例は次のとおりです。
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# 取得した日時をそのまま表示します
print(now)Pythonこのコードを実行すると、現在の年月日と時刻が表示されます。ここで大切なのは、datetime.now() が「今この瞬間」の日時を返してくれることです。つまり、プログラムを実行した時点の情報を自動で取得できています。
日付だけが必要な場合
自動化では時刻までは不要で、年月日だけほしいことも多いです。その場合は、取得した日時から日付部分だけを取り出せます。
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# 日付部分だけを取り出します
today = now.date()
# 今日の日付を表示します
print(today)Pythonこれで、2026-10-21 のような形の日付を取得できます。初心者の方は最初、「日時」と「日付」の違いが曖昧になりやすいですが、時刻まで含むものが日時、年月日だけのものが日付、と整理すると理解しやすいです。
自動化で使いやすい日付表示の形に整える
取得したそのままでは使いにくいことがある
現在日時を取得してそのまま表示することはできますが、自動化ではそのままでは使いにくい場面があります。たとえばファイル名に入れたいときや、人に見せる形で表示したいときには、書式を整えたほうが便利です。
そのために使うのが strftime() です。これは、日時を好きな形の文字列に変換するための仕組みです。
よく使う書式の例
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# 年月日を見やすい文字列に整形します
formatted_date = now.strftime("%Y-%m-%d")
# 整形した日付を表示します
print(formatted_date)Pythonこの例では、%Y が4桁の年、%m が2桁の月、%d が2桁の日を表します。結果として、たとえば 2026-10-21 のような形式になります。
この整形は非常に重要です。なぜなら、表示しやすくなるだけでなく、ファイル名やログ名としても扱いやすくなるからです。たとえば、backup_2026-10-21.txt のような名前を自動で作れます。
日本語に近い表示もできる
人が読むレポートや画面表示では、日本語に近い形式で表示したいこともあります。
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# 日本語に近い形式で整形します
formatted_date = now.strftime("%Y年%m月%d日")
# 結果を表示します
print(formatted_date)Pythonこのようにすれば、利用者向けの表示として分かりやすくなります。つまり、日付の取得と整形はセットで考えると実用性が高まります。
例題1 今日の日付を画面に表示する
最初に作るべき最小の自動化例
まずは最も基本的な例として、今日の日付を取得して画面に表示するスクリプトを作ります。
from datetime import datetime
# 今日の日付を表示する関数です
def show_today():
# 現在の日時を取得します
now = datetime.now()
# 年月日だけの文字列に整形します
today_text = now.strftime("%Y-%m-%d")
# 結果を画面に表示します
print(f"今日の日付は {today_text} です")
# メイン処理です
def main():
# 日付を表示します
show_today()
if __name__ == "__main__":
main()Pythonこの例は単純ですが、自動化として大切な流れが入っています。現在の値を自動で取得し、人が分かりやすい形に整えて、画面に表示しています。初心者の方は、まずこの流れをしっかり理解することが大切です。
例題2 ファイル名に日付を付ける
自動化らしさを実感しやすい活用法
次に、取得した日付をファイル名に使う例を見てみます。これはバックアップやログ保存で非常によく使われる考え方です。手で日付を付ける必要がなくなり、毎日実行しても自動でその日の名前が付きます。
from datetime import datetime
# 日付付きのファイル名を作る関数です
def create_file_name():
# 現在の日時を取得します
now = datetime.now()
# ファイル名に使いやすい形へ整形します
date_text = now.strftime("%Y%m%d")
# 日付付きファイル名を作成します
file_name = f"backup_{date_text}.txt"
# 作成したファイル名を表示します
print(f"作成するファイル名は {file_name} です")
def main():
create_file_name()
if __name__ == "__main__":
main()Pythonここでは 20261021 のように区切り文字なしで整形しています。これはファイル名として扱いやすく、並べたときにも日付順に並びやすいという利点があります。
この例題で深く理解したいこと
自動化では、見た目の分かりやすさだけでなく、あとから整理しやすい形にすることも重要です。ファイル名に日付を入れると、いつ作成したものかがひと目で分かりますし、バックアップ世代管理にも役立ちます。
ただし、同じ日に何度も実行すると同名になる可能性があります。そのため、必要に応じて時刻まで含める設計も考えるべきです。これは実務で非常に大切な視点です。
時刻まで含めて重複しにくくする例
from datetime import datetime
# 時刻付きのファイル名を作る関数です
def create_file_name():
# 現在の日時を取得します
now = datetime.now()
# 年月日と時分秒を整形します
timestamp = now.strftime("%Y%m%d_%H%M%S")
# 重複しにくいファイル名を作成します
file_name = f"backup_{timestamp}.txt"
# 結果を表示します
print(f"作成するファイル名は {file_name} です")
def main():
create_file_name()
if __name__ == "__main__":
main()Pythonこのように時刻まで含めれば、同日に複数回実行しても重複しにくくなります。初心者のうちから、将来の利用場面を少し想像しておくと、より実用的なコードになります。
例題3 今日の日付でログを記録する
実務でよく使う形に近づける
次に、今日の日付を使ってログファイル名を作り、そのファイルにメッセージを書き込む例を見てみます。これは自動化で非常によく使う形です。
from datetime import datetime
# ログファイルにメッセージを書き込む関数です
def write_log():
# 現在の日時を取得します
now = datetime.now()
# ログファイル名に使う日付を整形します
date_text = now.strftime("%Y%m%d")
# ログファイル名を作成します
log_file_name = f"log_{date_text}.txt"
# ログに書き込むメッセージを作成します
message = f"{now.strftime('%Y-%m-%d %H:%M:%S')} 自動処理を実行しました\n"
# ファイルを追記モードで開きます
with open(log_file_name, mode="a", encoding="utf-8") as file:
# メッセージを書き込みます
file.write(message)
# 画面にも結果を表示します
print(f"{log_file_name} にログを書き込みました")
def main():
write_log()
if __name__ == "__main__":
main()Pythonこのコードでは、ファイル名には日付だけを使い、ログ本文には日時まで入れています。これは実務でもよくあるパターンです。ファイル単位では1日ごとにまとめ、1件ごとの記録には時刻を残すことで、整理しやすさと詳しさのバランスを取っています。
日付を使った条件分岐の考え方
月初や月末などで処理を変えることがある
自動化では、取得した日付を条件分岐に使うこともあります。たとえば、月初だけ特別な集計をする、月末だけバックアップを取る、といったケースです。ここではまず、今日が何日かを取得して判定する簡単な例を見ます。
from datetime import datetime
# 今日の日にちによって処理を分ける例です
def check_day():
# 現在の日時を取得します
now = datetime.now()
# 日にちだけを取り出します
day = now.day
# 1日なら月初処理として案内を表示します
if day == 1:
print("今日は月初なので、月初用の処理を行います")
else:
print("通常の処理を行います")
def main():
check_day()
if __name__ == "__main__":
main()Pythonこのように、日付は単なる表示用データではなく、処理の分岐条件にも使えます。自動化の幅を広げるうえで、とても重要な使い方です。
初心者が気をつけたい重要ポイント
文字列の日付と、日付データそのものを混同しない
初心者の方がつまずきやすいのは、「画面に表示するための日付文字列」と、「計算や判定に使う日付データ」を混同することです。たとえば "2026-10-21" は文字列であり、日付そのものではありません。一方で、datetime.now() から得られる値は日時データです。
表示だけなら文字列で十分ですが、日数の差を計算したり、前日や翌日を扱ったりする場合は、日付データとして持っていたほうが扱いやすいです。自動化が進むほど、この区別は重要になります。
ファイル名に使えない文字へ注意する
日付や時刻をそのまま文字列化したとき、環境によってはファイル名に使いにくい記号が含まれることがあります。たとえば、時刻表記に含まれるコロンは、環境によって問題になることがあります。そのため、ファイル名に使うときは %H%M%S のように記号なしで整形するほうが安全です。
これは地味ですが非常に重要な注意点です。表示用の書式と、ファイル名用の書式は分けて考えるべきです。
タイムゾーンの考え方も将来は重要になる
初心者の段階ではまず現在日時を取得できれば十分ですが、将来的にはタイムゾーンも重要になります。サーバー上で動かす自動化や、海外のシステムと連携する処理では、「どの地域の現在時刻か」が問題になることがあります。
最初の学習ではそこまで気にしすぎる必要はありませんが、「日付や時刻は環境に依存することがある」という意識だけ持っておくと、将来役立ちます。
セキュリティと運用の観点から見た日付利用の注意
日付だけに頼って一意性を保証しない
ファイル名やログ名に日付を使うのは便利ですが、日付だけでは同日に複数回実行したときに重複する可能性があります。そのため、上書きが危険な処理では、時刻まで含めるか、すでに同名ファイルがあるかを確認する必要があります。
これは運用上の安全性に関わる重要ポイントです。自動化では「たまにうまくいかない」では困るため、重複や上書きの可能性を事前に考えることが大切です。
ログには必要以上の情報を入れない
日付付きログは便利ですが、そこに個人情報や秘密情報を不用意に書き込まないよう注意が必要です。画面表示と同じく、ログもあとから見返される情報です。便利さのために記録しすぎると、情報漏えいの原因になることがあります。
つまり、日付を自動取得して記録する仕組みは便利ですが、何を残すかは慎重に設計する必要があります。
初心者向けの実用テンプレート
ここまでの内容を踏まえると、日付を自動取得して活用する基本テンプレートは次のようになります。表示、ファイル名生成、ログ的な記録の考え方をまとめた形です。
from datetime import datetime
# 日付を取得して基本情報を表示する関数です
def process_today():
# 現在の日時を取得します
now = datetime.now()
# 表示用の日付を作成します
display_date = now.strftime("%Y-%m-%d")
# ファイル名用の日付を作成します
file_date = now.strftime("%Y%m%d")
# 実行開始を表示します
print("処理を開始します")
# 今日の日付を表示します
print(f"今日の日付は {display_date} です")
# 作成予定のファイル名を表示します
print(f"出力ファイル名の例: report_{file_date}.txt")
# 処理終了を表示します
print("処理を終了します")
# メイン処理です
def main():
process_today()
if __name__ == "__main__":
main()Pythonこのテンプレートは基本的ですが、実用につながる大事な考え方が含まれています。つまり、取得した日時をそのまま使うのではなく、用途ごとに整形し、表示用とファイル名用を分けて考えています。この整理ができるようになると、自動化の設計がかなりしやすくなります。
学習を進めるときのおすすめの順番
日付の自動取得を無理なく理解するには、次の順番で練習すると効果的です。
- まずは
datetime.now()で現在日時を取得して表示する - 次に
.date()で日付だけ取り出してみる - その次に
strftime()で見やすい形へ整形する - ファイル名に日付を付ける練習をする
- ログファイル名やログ本文に日付を使ってみる
- 最後に条件分岐や上書き対策まで考える
この順番で進めると、単なる文法ではなく、自動化の中で日付をどう活用するかが自然に身につきます。
まとめ
Python自動化の基礎として、日付を自動取得する技術は非常に重要です。現在日付を自動で取得できるようになると、毎回コードを書き換えなくても、その時点に合ったファイル名、ログ、表示、条件分岐を実現できるようになります。これは自動化の便利さを強く実感しやすい部分です。
大切なのは、単に現在日付を表示するだけでなく、用途に応じて整形し、表示用とファイル名用を使い分けることです。また、同日に複数回実行する場合の重複や、記録内容の安全性にも注意が必要です。
初心者の方はまず、datetime.now() で現在日時を取得し、strftime() で整形して表示するところから始めると良いです。そこからファイル名やログ、条件分岐へと少しずつ発展させることで、日付を使った自動化の基礎がしっかり身につきます。
日付の自動取得は地味に見えて、多くの自動化に共通する非常に実用的な技術です。だからこそ、早い段階で丁寧に理解しておく価値があります。ここを押さえることで、自動化の幅は確実に広がります。
