たくまのブログ

たくまのブログ

皆さんに見て頂きたい反面、
ただの記録としても使います。

タイトルの通り、祝日と曜日(特に土日)を取得し

プログラム実行日が、土日祝日かどうか判別したかった為

コードを作成してみました

 

調べても古いデータが多かった為、備忘録として残します

以下、祝日判別のPythonコード

from datetime import date
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プログラムは終了します。

 

 

 

ご拝読ありがとうございました。