ヨルフの日記

ヨルフといいます.知ったこと,体験したこと,考えたことなどを発信していきます.英語勉強中.Amazon.co.jpアソシエイト

Pythonを使って簡単な表を作る

習慣を管理するための表をPythonスクリプトを使って自動で作れるようにした。

きっかけ

Pythonの勉強のため、土日はpaizaラーニングのC問題を3問解くことにした。表を作って、やったかどうかをチェックすることにした。

作りたいもの

こんな感じの表。土日の日付が並んでいて、やったかどうかを0か1かで記録する。一応合計も出せるようにする。

f:id:yoruhu:20190602231022j:plain

作戦検討

Mac使いなのでNumbersを使って入力しようと思うけど、Numbersに詳しくないのでこういう表をパッと作る方法がわからなかった。せっかくなのでPythonでなんとかしようと思った。

やり方としては、CSVファイルを作って、Numbersに読ませて使うことにした。CSVファイルなら簡単に作れそう。

作った

CSVファイルを作るためのPythonスクリプトを作った。こんな感じ。スクリプトを実行した日に対して、その月の土日の日付を列挙する。

# coding: utf-8

import datetime

MAX_MONTH_LENGTH = 31

#現在の年月を取得
today = datetime.date.today()
this_year = today.year
this_month = today.month

#ファイル作成
month_name = today.strftime("%B")
f = open(month_name + ".csv","w")

#表の項目行の記入
f.write("日付,実行の有無\n")

#チェック対象の日付の記入
day = datetime.date(this_year, this_month, 1) #今月の初日
num_of_day = 0                                #チェック対象の日付の個数
for i in range(0, MAX_MONTH_LENGTH):
    if day.month == this_month and (day.weekday() == 5 or day.weekday() == 6):
        #「今月の土日」の場合
        #日付を記入する
        f.write(str(this_year) + "/" + str(this_month) + "/" + str(day.day) + ",0\n")
        num_of_day +=1
    else:
        #「今月の土日」以外の場合
        pass
    day += datetime.timedelta(days=1)

#計数行の記入
f.write("合計,=SUM(B2:B" + str(num_of_day + 1) +")\n")
f.close()

出来るCSVファイルはこんな感じ。

f:id:yoruhu:20190602231203j:plain

これをNumbersで開くとこんな感じ。

f:id:yoruhu:20190602231209j:plain

Numbersで開いた後、[command + s]で改めて保存すると、Numbersファイルとして保存される。こんな感じ。

f:id:yoruhu:20190602231509j:plain

このNumbersファイルをチェック用に使う。SUM関数も使えてるっぽい。


最後のNumbersファイルの作り方ダサいけど…まあいいでしょう。何か良いこと知ってる人いたら教えてください〜


おしまい。