タイトルの通り、祝日と曜日(特に土日)を取得し
プログラム実行日が、土日祝日かどうか判別したかった為
コードを作成してみました
調べても古いデータが多かった為、備忘録として残します
以下、祝日判別のPythonコード
import holidays
# 現在の日付を取得
current_date = date.today()
# 動作確認用
#current_date = date(2024, 4, 29)
# 日本の祝日を取得
jp_holidays = holidays.Japan()
# 現在が祝日か判別
if current_date in jp_holidays:
print('祝日です')
else:
print('平日です')
以下、曜日判別のPythonコード
from datetime import date
# 現在の日付を取得
current_date = date.today()
# 曜日を取得(0: 月曜日, 1: 火曜日, ..., 6: 日曜日)
weekday_number = current_date.weekday()
# 曜日を表示
if weekday_number == 0:
print("月曜日")
elif weekday_number == 1:
print("火曜日")
elif weekday_number == 2:
print("水曜日")
elif weekday_number == 3:
print("木曜日")
elif weekday_number == 4:
print("金曜日")
elif weekday_number == 5:
print("土曜日")
else:
print("日曜日")
こちらのコードで当環境では正常に動作しました。
必要なライブラリは適所インストールしてください。
以下は実際に使用した際のPythonコードです。
from datetime import date
import holidays
import os
import subprocess
def check_holiday_now():
# 現在の日付を取得
current_date = date.today()
# 動作確認用
#current_date = date(2024, 4, 29)
# 日本の祝日を取得
jp_holidays = holidays.Japan()
# 現在が祝日か判別
if current_date in jp_holidays:
print('祝日です')
return True
else:
print('平日です')
return False
def check_weekday_now():
# 現在の日付を取得
current_date = date.today()
# 曜日を取得(0: 月曜日, 1: 火曜日, ..., 6: 日曜日)
return current_date.weekday()
# 実行日が祝日と日曜日のどちらでもない時
if not (check_holiday_now() or (check_weekday_now() == 6)):
# 自身のプログラムのディレクトリパスを取得
program_directory = os.path.dirname(os.path.abspath(__file__))
# 実行するバッチファイルの相対パス
batch_file_path = os.path.join(program_directory, r"program_run/file.bat")
# バッチファイルを別ウィンドウで実行
subprocess.Popen(["start", "cmd", "/c", batch_file_path], shell=True)
動作としては、実行した日が祝日でも日曜日でもない時に
指定した相対パスからbatファイルを実行します。
startを使用している為、batファイルを実行し終わるのを待たずに
Pythonプログラムは終了します。
ご拝読ありがとうございました。