今さらPython

実行すると、未来10日間、または10回先までの休日を表示するようにしてみたわ。
使ったライブラリは以下。

なお、jpholiday は pip インストールの必要があると思う。

#!/usr/bin/python3 

import datetime
import jpholiday
import sys

class Hol():
   def __init__(self):
       self.today = datetime.datetime.now()
       self.yos = ["月","火","水","木","金","土","日"]
       self.kyou(self.today)

   def kyou(self,today):
       self.holiday_name = jpholiday.is_holiday_name(self.today)
       self.yobi = self.yos[self.today.weekday()]
       self.kf = False
       if(self.holiday_name != None) :
           self.kd = self.holiday_name
           self.kf = True
       elif(self.yobi == "土" or self.yobi == "日"):
           self.kd = self.yobi + "曜日"
           self.kf = True
       else:
           self.kd = "平日(" + self.yobi + "曜日)"

   def day(self,y,m,d):
       self.today = datetime.datetime(y,m,d)
       self.holiday_name = self.kyou(self.today)

#
k_only = False
d99 = 10
args = sys.argv
for i in range(len(args)):
   if(args[i] == "-k"):
       k_only = True
t_d = Hol()
h_name = t_d.holiday_name

d2 = 0
while d2 < d99:
   h_name = t_d.kd
   if(t_d.kf == True or k_only == False):
       kky = "今日"
       if(d2 > 0):
           kky = str(t_d.today.year)+"年"+str(t_d.today.month)+"月"+str(t_d.today.day)+"日"
       kky = kky + "は、"
       if(h_name != None):
           print(kky+h_name+"です。")
       elif(k_only == False):
           print(kky+"平日です。")

   # 休日フラグがオフ、またはガチの休日なら加算する。
   if(k_only == False or t_d.kf == True):
       d2 = d2 + 1
   # 日データを一日進める。
   t_d.today = t_d.today + datetime.timedelta(days=1)
   t_d.kyou(t_d.today)

実行結果は以下の通り。

引数なし

$ holiday.py
今日は、勤労感謝の日です。
2022年11月24日は、平日(木曜日)です。
2022年11月25日は、平日(金曜日)です。
2022年11月26日は、土曜日です。
2022年11月27日は、日曜日です。
2022年11月28日は、平日(月曜日)です。
2022年11月29日は、平日(火曜日)です。
2022年11月30日は、平日(水曜日)です。
2022年12月1日は、平日(木曜日)です。
2022年12月2日は、平日(金曜日)です。

-k 指定

$ holiday.py -k
今日は、勤労感謝の日です。
2022年11月26日は、土曜日です。
2022年11月27日は、日曜日です。
2022年12月3日は、土曜日です。
2022年12月4日は、日曜日です。
2022年12月10日は、土曜日です。
2022年12月11日は、日曜日です。
2022年12月17日は、土曜日です。
2022年12月18日は、日曜日です。
2022年12月24日は、土曜日です。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS