コードその2です。名前は「date_prc01.py」固定です。UTF8で保存してください。
最近はウインドウズのメモ帳もUTF8を使っている時代ですので大丈夫だとは思いますが、一応ご確認ください。
では、大変ですが以下コピーしてお使いください。
# coding: utf-8 # Ver01-24011 import os, datetime # カレンダーのスタート日を返す関数 def make_stat_date01(CONF01): NENGETU01 = CONF01["NENGETU01"] SYUU_START01 = CONF01["SYUU_START01"] d01 = datetime.date(NENGETU01[0],NENGETU01[1],1) #前の月のSYUU_START01曜日からスタート for i in range(7): if d01.weekday() == SYUU_START01 :#曜日の先頭 break d01 = d01 - datetime.timedelta(days = 1) return(d01) # 記念日をリストにする関数 def make_kinenbi01(CONF01): NENGETU01 = CONF01["NENGETU01"] KINENBI01 = list(CONF01["KINENBI01"]) day_kinenbi01 = [] kosu01 = len(KINENBI01) kosu014 = kosu01/4 if (kosu01 - int(kosu014)*4) <> 0: # 一行4件 print("KINENBI01の件数エラー") return else: for i in range(kosu014): day_kinenbi01.append(KINENBI01[i*4:(i+1)*4]) return(day_kinenbi01) # 祝日をリストにする関数 def make_syukujitu01(CONF01): DIR01 = CONF01["DIR01"] NENGETU01 = CONF01["NENGETU01"] day_syuku01 = [] syuku_file01 = os.path.join(DIR01,"syukujitsu.csv") if os.path.isfile(syuku_file01) == True: def yield01(f0): for line01 in f0: line01 = unicode(line01, 'shift-jis').encode('utf-8') yield line01 with open(syuku_file01) as f0: for line01 in yield01(f0): line_kou01 = line01.split(",") if line_kou01[0].count("/") < 1: # タイトル行(一行目)を無視する pass else: day01 = line_kou01[0].split("/") tmp_day01 = datetime.date(int(day01[0]), int(day01[1]), int(day01[2])) if tmp_day01 < datetime.date(NENGETU01[0],1,1): # 古いものは拾わない pass else: linekou01 = (tmp_day01, line_kou01) day_syuku01.append(linekou01) else: day_syuku01.append((datetime.date(1954,1,1), ["1954/1/1",""])) return(day_syuku01) # カレンダーの6行7列の枠線を作る。 def make_waku01(CONF01): DIR01 = CONF01["DIR01"] syukujitu01 = list(make_syukujitu01(CONF01)) kinenbi01 = list(make_kinenbi01(CONF01)) syuu_col01 = 0 #週の何日目か? syuu_lin01 = 0 #月の何週目か? tougetu01 = True #当月か当月以外か? waku01 = [] stat_date01 = make_stat_date01(CONF01) for i in range(6*7): suu_up_x01 = CONF01["SUUJI_POS01"][0] + CONF01["WAKU_SIZ01"][0] * syuu_col01 # 左上のX suu_up_y01 = CONF01["SUUJI_POS01"][1] + CONF01["WAKU_SIZ01"][1] * syuu_lin01 # 左上のY suu_dw_x01 = CONF01["SUUJI_POS01"][2] + CONF01["WAKU_SIZ01"][0] * syuu_col01 # 右下のX suu_dw_y01 = CONF01["SUUJI_POS01"][3] + CONF01["WAKU_SIZ01"][1] * syuu_lin01 # 右下のY moji_x01 = CONF01["MOJI_POS01"][0] + CONF01["WAKU_SIZ01"][0] * syuu_col01 # 左のX moji_y01 = CONF01["MOJI_POS01"][1] + CONF01["WAKU_SIZ01"][1] * syuu_lin01 # 左のY point_up_x01 = CONF01["POINT_POS01"][0] + CONF01["WAKU_SIZ01"][0] * syuu_col01 # 左上のX point_up_y01 = CONF01["POINT_POS01"][1] + CONF01["WAKU_SIZ01"][1] * syuu_lin01 # 左上のY point_dw_x01 = CONF01["POINT_POS01"][2] + CONF01["WAKU_SIZ01"][0] * syuu_col01 # 右下のX point_dw_y01 = CONF01["POINT_POS01"][3] + CONF01["WAKU_SIZ01"][1] * syuu_lin01 # 右下のY if syuu_col01 > 5: # 改行する場合 syuu_col01 = 0 syuu_lin01 += 1 else: syuu_col01 += 1 tmp01 = dict( i = i, date01 = stat_date01 + datetime.timedelta(days = i), suu_up_x01 = suu_up_x01, suu_up_y01 = suu_up_y01, suu_dw_x01 = suu_dw_x01, suu_dw_y01 = suu_dw_y01, moji_x01 = moji_x01, moji_y01 = moji_y01, point_up_x01 = point_up_x01, point_up_y01 = point_up_y01, point_dw_x01 = point_dw_x01, point_dw_y01 = point_dw_y01, ) # 文字関係のデータ作成 kinenbi_bun01, kinenbi_png01, syukujitu_bun01= "", "", "" day_red01, day_blue01 = False, False calender_day01 = tmp01["date01"].day calender_month01 = tmp01["date01"].month calender_youbi01 = tmp01["date01"].weekday() if calender_youbi01 == 5: # 土曜日 day_blue01 = True if calender_youbi01 == 6: # 日曜日 day_red01 = True if calender_month01 <> CONF01["NENGETU01"][1]: # 当月以外は薄くする opacity01 = CONF01["SUUJI_ZOKU01"][0] tougetu01 = False else: opacity01 = 100 tougetu01 = True for k in range(len(kinenbi01)): if (calender_month01 == kinenbi01[k][0]) and (calender_day01 == kinenbi01[k][1]) and (tougetu01): kinenbi_bun01 = kinenbi01[k][2] kinenbi_png01 = kinenbi01[k][3] # 記念日のワンポイントのファイルが無かったら無視する file_chk01 = os.path.join(DIR01,kinenbi_png01) if os.path.isfile(file_chk01) == False: kinenbi_png01 = "" for k in range(len(syukujitu01)): if (calender_month01 == syukujitu01[k][0].month) and (calender_day01 == syukujitu01[k][0].day): day_red01 = True if (tougetu01): syukujitu_bun01 = syukujitu01[k][1][1] tmp02 = dict( calender_day01 = calender_day01, calender_month01 = calender_month01, calender_youbi01 = calender_youbi01, kinenbi_bun01 = kinenbi_bun01, kinenbi_png01 = kinenbi_png01, syukujitu_bun01 = syukujitu_bun01, opacity01 = opacity01, day_red01 = day_red01, day_blue01 = day_blue01, ) tmp03 = tmp01.copy() tmp03.update(**tmp02) waku01.append(tmp03) return(waku01)