Python自動化の基礎として、今日の日付でファイル名を作る意味を理解する
Python自動化を学び始めると、画面表示、引数の受け取り、日付や時刻の自動取得、ファイル操作など、さまざまな基礎技術を少しずつ身につけていきます。その中でも、初心者の方が早い段階で覚えておくと実用性が高いのが「今日の日付でファイル名を作る」という考え方です。
一見すると小さなテクニックに見えるかもしれませんが、実際には自動化の現場で非常によく使われます。たとえば、バックアップファイルに日付を付ける、ログファイルを日ごとに分ける、レポート出力ファイルに作成日を残す、毎日の集計結果を別ファイルに保存する、といった場面です。つまり、日付付きファイル名は「いつ作られたファイルなのかを分かりやすくし、上書き事故を減らし、整理しやすくする」ための重要な仕組みです。
初心者の方は最初、ファイル名を固定で書いてしまいがちです。たとえば report.txt のように毎回同じ名前で保存すると、前回の結果を上書きしてしまう可能性があります。一方で、今日の日付を自動で付けるようにすれば、ファイルごとの作成日が分かりやすくなり、保存履歴も残しやすくなります。これこそが自動化で日付を活用する大きな価値です。
この記事では、Python自動化の基礎として、今日の日付でファイル名を作る考え方を、初心者向けに順を追ってわかりやすく解説します。日付の取得、文字列への整形、ファイル名への組み込み、実用例、注意点、安全な設計まで、例題やテンプレートを交えながら詳しく説明します。
まず理解したい、なぜ日付付きファイル名が重要なのか
上書き事故を防ぎやすくなる
同じファイル名で毎回保存すると、以前の内容が新しい内容で上書きされることがあります。もちろん、意図的に上書きしたい場合もありますが、自動化では過去の記録を残したいことが多いため、毎回同じ名前にしてしまうと不便です。
たとえば、毎日レポートを出力する処理で、常に report.txt という名前を使っていたら、昨日の内容は今日の実行で消えてしまいます。しかし、report_20261021.txt のように日付付きで保存すれば、日ごとのファイルを残せます。
あとから見返したときに分かりやすい
ファイル名に日付が入っていると、そのファイルがいつ作られたものかがひと目で分かります。これは整理の面でも非常に便利です。とくにバックアップやログ、集計結果のように、時系列で管理したいファイルでは大きなメリットがあります。
- いつ作成したファイルか分かりやすい
- 同じ種類のファイルを日付順に並べやすい
- あとから古いデータを探しやすい
- 自動化の履歴管理がしやすい
このように、日付付きファイル名は単なる見た目の工夫ではなく、運用のしやすさに直結しています。
今日の日付を取得する基本
datetime モジュールを使う
Pythonで今日の日付を扱うときの基本は、datetime モジュールです。現在の日時を取得し、その中から日付を使います。
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# 取得した日時をそのまま表示します
print(now)Pythonこのコードでは、年、月、日、時、分、秒まで含んだ現在の日時を取得できます。ただし、ファイル名に使いたいのは「今日の日付」であることが多いため、そのままでは少し扱いにくいです。そこで次に、必要な形へ整える考え方が重要になります。
日付をファイル名向けの文字列へ整形する
ファイル名に使うためには、日付を文字列として整える必要があります。そのときによく使うのが strftime() です。
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# ファイル名に使いやすい形へ整形します
date_text = now.strftime("%Y%m%d")
# 結果を表示します
print(date_text)Pythonこの例では、たとえば 20261021 のような形になります。これはファイル名に使いやすく、並べたときに日付順にも並びやすい、とても便利な形式です。
ファイル名へ日付を組み込む基本の考え方
固定部分と変わる部分を分けて考える
初心者の方は、ファイル名全体を1つの文字列として考えがちですが、実際には「毎回変わらない部分」と「日付のように毎回変わる部分」を分けて考えると整理しやすくなります。
たとえば、report_20261021.txt というファイル名なら、次のように分けられます。
- 固定部分:
report_ - 変化する部分:
20261021 - 拡張子:
.txt
この考え方ができると、自動化の設計がとても楽になります。日付以外にも、ファイル種別や処理対象名などを組み合わせやすくなるからです。
f文字列で自然に組み立てる
Pythonでは、f文字列を使うとファイル名を分かりやすく組み立てられます。
from datetime import datetime
# 現在の日時を取得します
now = datetime.now()
# 日付を文字列に変換します
date_text = now.strftime("%Y%m%d")
# 日付付きファイル名を作成します
file_name = f"report_{date_text}.txt"
# 作成したファイル名を表示します
print(file_name)Pythonこの書き方は非常に読みやすく、初心者にもおすすめです。自動化ではこのような文字列組み立てが頻繁に出てくるため、早めに慣れておくと役立ちます。
例題1 今日の日付でファイル名を作って画面に表示する
最初に作るべき最小の例
まずは、今日の日付を使ってファイル名を作り、その結果を画面に表示するだけのシンプルな例を見てみます。
from datetime import datetime
# 今日の日付でファイル名を作る関数です
def create_file_name():
# 現在の日時を取得します
now = datetime.now()
# 今日の日付をファイル名向けの形式に整形します
date_text = now.strftime("%Y%m%d")
# 日付付きファイル名を作成します
file_name = f"report_{date_text}.txt"
# 結果を表示します
print(f"作成するファイル名は {file_name} です")
# メイン処理です
def main():
# ファイル名を作成して表示します
create_file_name()
if __name__ == "__main__":
main()Pythonこの例は単純ですが、自動化で大切な流れがしっかり入っています。現在の情報を自動で取得し、用途に合った形へ整え、必要な文字列を組み立てています。初心者の方は、まずこの流れを理解することが重要です。
例題2 実際に日付付きファイルを作成する
表示だけで終わらず、ファイル作成まで進める
次に、作ったファイル名を実際に使ってファイルを作成する例を見ます。これにより、日付付きファイル名が自動化でどう役立つかをより実感しやすくなります。
from datetime import datetime
# 今日の日付でファイルを作成する関数です
def create_report_file():
# 現在の日時を取得します
now = datetime.now()
# 日付をファイル名向けに整形します
date_text = now.strftime("%Y%m%d")
# ファイル名を作成します
file_name = f"report_{date_text}.txt"
# ファイルを作成して内容を書き込みます
with open(file_name, mode="w", encoding="utf-8") as file:
# サンプルの内容を書き込みます
file.write("これは自動作成されたレポートです。\n")
file.write(f"作成日: {now.strftime('%Y-%m-%d')}\n")
# 完了メッセージを表示します
print(f"{file_name} を作成しました")
# メイン処理です
def main():
create_report_file()
if __name__ == "__main__":
main()Pythonこのコードでは、ファイル名だけでなく、ファイルの中にも作成日を書き込んでいます。これは実務でもよくある形です。外側のファイル名でざっくり日付を把握し、中身にも詳細を残すことで、管理しやすさが高まります。
ここで本当に大切な注意点
この例では w モードでファイルを開いているため、同じ名前のファイルがすでにあると上書きされます。日付付きだから安全と思い込みやすいですが、同じ日に2回以上実行すると同名になる可能性があります。つまり、日付を付けただけでは上書き事故を完全には防げません。
この点は初心者の方が見落としやすい重要ポイントです。毎日1回しか実行しない前提なら問題になりにくいですが、複数回実行する可能性があるなら、時刻まで含めるか、存在確認を入れる必要があります。
例題3 同じ日に複数回実行しても重複しにくくする
時刻まで含めると実用性が上がる
同じ日に何度もファイルを作る可能性があるなら、日付だけでなく時刻もファイル名に含める方法が有効です。これにより、同日中の複数実行でも区別しやすくなります。
from datetime import datetime
# 日付と時刻を含むファイル名を作る関数です
def create_unique_file_name():
# 現在の日時を取得します
now = datetime.now()
# 年月日と時分秒を整形します
timestamp = now.strftime("%Y%m%d_%H%M%S")
# 重複しにくいファイル名を作成します
file_name = f"report_{timestamp}.txt"
# 結果を表示します
print(f"作成するファイル名は {file_name} です")
def main():
create_unique_file_name()
if __name__ == "__main__":
main()Pythonこの形式なら、たとえば report_20261021_143045.txt のようになります。人が見ても意味が分かりやすく、並べたときの順番も自然です。
なぜコロンではなく数字だけにするのか
時刻を 14:30:45 のようにそのまま使いたくなるかもしれませんが、ファイル名にコロンを含めるのは環境によって問題になることがあります。そのため、ファイル名では %H%M%S のように記号なしにするか、必要なら安全な区切り文字だけを使うほうが良いです。
これは表示用と保存用の形式を分けるという、非常に重要な考え方です。
例題4 バックアップファイル名に今日の日付を使う
自動化らしい活用例
次に、元ファイルを別名でバックアップする例を見ます。これは日付付きファイル名の代表的な用途です。
from datetime import datetime
import shutil
# 指定したファイルのバックアップを作成する関数です
def backup_file(source_file):
# 現在の日時を取得します
now = datetime.now()
# 日付をファイル名向けに整形します
date_text = now.strftime("%Y%m%d")
# バックアップ用のファイル名を作成します
backup_file_name = f"backup_{date_text}_{source_file}"
# ファイルをコピーしてバックアップを作成します
shutil.copy(source_file, backup_file_name)
# 結果を表示します
print(f"{backup_file_name} を作成しました")
# メイン処理です
def main():
# バックアップしたいファイル名を指定します
source_file = "sample.txt"
# バックアップを作成します
backup_file(source_file)
if __name__ == "__main__":
main()Pythonこの例では、元ファイル名の前にバックアップ用の日付を付けています。こうすると、何のバックアップか分かりやすくなります。実務では、元の名前を残しつつ日付だけ追加する形はとてもよく使われます。
初心者がよくつまずくポイントと深掘り解説
日付を文字列として使うことを忘れる
ファイル名は文字列なので、日付も最終的には文字列として組み込む必要があります。初心者の方は、日付データそのものと文字列を混同しやすいです。表示やファイル名作成では、strftime() で整形して文字列にする、という流れを意識すると整理しやすいです。
表示用の形式とファイル名用の形式を同じにしてしまう
人間に見せるときは 2026-10-21 や 2026年10月21日 のような形が分かりやすいですが、ファイル名では 20261021 のように記号を減らした形のほうが扱いやすいです。この違いを意識しないと、見やすいけれど扱いにくいファイル名になりがちです。
自動化では、見た目の分かりやすさと、システム上の扱いやすさを分けて考えることが大切です。
日付だけで一意になると思い込まない
「日付付きだから重複しない」と思ってしまうのは、初心者の方によくある誤解です。しかし、同じ日に2回以上実行すれば同名になる可能性があります。大切なのは、1日1回なのか、1日に何度も実行するのか、という運用前提を考えることです。
この視点は非常に重要です。自動化はコード単体ではなく、どのように使われるかまで考えて設計することで、初めて実用的になります。
セキュリティと安全性の観点からの注意
上書きや誤保存を防ぐ工夫を入れる
日付付きファイル名は便利ですが、それでも上書きの危険はゼロではありません。特に同日複数回実行や、別の処理が同じ名前を作る可能性がある場合は注意が必要です。必要に応じて次のような対策を取ると安全です。
- 時刻まで含める
- 保存前に同名ファイルの存在を確認する
- 確認モードを作って予定ファイル名だけ先に表示する
- 重要ファイルは別フォルダへバックアップする
自動化では、動くことよりも安全に動くことが大切です。初心者の段階からこの考え方を持っておくと、将来とても役立ちます。
ファイル名に個人情報や秘密情報を入れない
日付付きファイル名は管理しやすいですが、そこに個人名、顧客番号、機密内容をそのまま含めると、ファイル一覧を見ただけで情報が漏れる可能性があります。ファイル名は意外と多くの場面で目に触れるため、内容を入れすぎないことも大切です。
たとえば、必要最小限の識別情報だけにとどめ、詳細はファイルの中身で管理するほうが安全なこともあります。
初心者向けの実用テンプレート
ここまでの内容を踏まえると、今日の日付でファイル名を作る基本テンプレートは次のようになります。画面表示、ファイル名作成、ファイル書き込みの流れをまとめた形です。
from datetime import datetime
# 今日の日付でファイル名を作成し、ファイルを書き込むテンプレートです
def create_daily_file():
# 現在の日時を取得します
now = datetime.now()
# ファイル名に使う日付文字列を作成します
date_text = now.strftime("%Y%m%d")
# 出力ファイル名を組み立てます
file_name = f"daily_report_{date_text}.txt"
# 処理開始を表示します
print("処理を開始します")
# 作成するファイル名を表示します
print(f"作成予定のファイル名: {file_name}")
# ファイルに内容を書き込みます
with open(file_name, mode="w", encoding="utf-8") as file:
# 基本情報を書き込みます
file.write("日次レポート\n")
file.write(f"作成日: {now.strftime('%Y-%m-%d')}\n")
# 完了を表示します
print(f"{file_name} を作成しました")
print("処理を終了します")
# メイン処理です
def main():
create_daily_file()
if __name__ == "__main__":
main()Pythonこのテンプレートは非常に基本的ですが、日付取得、整形、ファイル名作成、書き込み、画面表示という重要な流れがまとまっています。初心者の方は、まずこの形をもとに少しずつ目的に合わせて改造していくと学びやすいです。
学習を進めるときのおすすめの順番
今日の日付でファイル名を作る技術をしっかり身につけるには、次の順番で練習すると理解しやすいです。
- まずは
datetime.now()で現在日時を取得する - 次に
strftime("%Y%m%d")で日付文字列を作る - その次に f文字列でファイル名を組み立てる
- 画面にファイル名を表示して確認する
- 実際にその名前でファイルを作成する
- 最後に時刻や存在確認を加えて安全性を高める
この順番で進めると、単なる文法ではなく、自動化でどう役立つかまで自然に理解できます。
まとめ
Python自動化の基礎として、今日の日付でファイル名を作る技術は非常に実用的です。日付付きファイル名を使うことで、上書き事故を減らし、いつ作成したファイルかを分かりやすくし、履歴管理や整理もしやすくなります。
大切なのは、現在日付を自動取得し、ファイル名に適した形式へ整え、固定部分と組み合わせて自然に作ることです。また、同じ日に複数回実行する可能性があるなら、時刻を加える、存在確認をする、といった安全策も必要です。
初心者の方はまず、日付を取得して文字列に整形し、画面へ表示するところから始めると良いです。そこからファイル名作成、実際のファイル出力、バックアップ用途へと発展させることで、自動化の実用性がぐっと高まります。
今日の日付でファイル名を作るという技術は、地味に見えて多くの自動化の土台になります。だからこそ、早い段階で丁寧に理解しておく価値があります。ここを押さえることで、ファイルを扱う自動化がより安全で使いやすいものになっていきます。
