#はじめに
macOSでPythonのプログラミングを書くようになった後はそれを自動実行させるのが次のステップかなと思います。
今回はcronを使ってpythonを自動実行する方法を記載します。
#環境
Python3.9
macOS Catalina10.15.7
#方法
####1.cronにアクセス権を付与
システム環境設定>セキュリティとプライバシー>プライバシー>フルディスクアクセス
の順にクリックします。
次に、鍵マークをクリックして管理者パスワードを入力後、「+」ボタンを押します。
アプリケーションの選択画面で[command] + [shift] + [G]押します。
検索バーに /usr/sbin/cron と入力してcronを追加します。
####2.ターミナルを起動
ターミナルを起動します。
Python3のプログラムの場所を[which python3]コマンドで確認します。
% which python3
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
次に、デスクトップに置いたプログラムの位置を確認します。
右クリックして[情報見る]をクリックし[場所]を選択して[control] + [C]でコピーします。
メモに貼り付けておいて下さい。
メモに貼り付けたら、最後に[/とファイル名]を追加します。
以下の例は「/Mac_SBI_IPO.py」を追記しています。
/Users/hirockio/Desktop/python/Mac_SBI_IPO.py
####2.cronに記入
ターミナルをもう一つ開きます。
以下のコマンドを入力します。
% crontab -e
画面下部が--INSERT--となったら記入できます。
####スケジュールの書き方
"分 時 日 月 曜日 /Python3のフルパス /実行したいプログラム"
指定しない場合は * を入れます。
(例)毎朝9時に実行する場合の例
0 9 * * * /Library/Frameworks/Python.framework/Versions/3.9/bin/python3
/Users/hirockio/Desktop/python/Mac_SBI_IPO.py
分 0〜59
時 0〜23
日 1〜31
月 1〜12
曜日 0〜7(0,7=日曜、1=月曜、2=火曜、3=水曜、4=木曜、5=金曜、6=土曜)
###サンプル
毎朝8:30に実行するなら、30 8 * * * /フルパス /Mac_SBI_IPO.py
毎週水曜の18:45に実行するなら、45 18 * * 3 /フルパス /Mac_SBI_IPO.py
毎月26日の23:00に実行するなら、0 23 26 * * /フルパス /Mac_SBI_IPO.py
####はまり注意
上記の間は全て半角スペースです。
例えば、/フルパス[ここ]/実行したいプログラム
[ここ]に改行してしまうとエラーになって実行されません!
Python3.9でデスクトップにあるPythonフォルダ内のMac_SBI_IPO.pyを毎日11時20分に実行するサンプルは以下となります。
必要に応じてコピーしてお使いください。
20 11 * * * /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /Users/hirokio/Desktop/python/Mac_SBI_IPO.py
貼り付け後に「esc」を押しコマンドモードに切り替えてから :wq と入力して、returnキーでcronを保存します。
保存の際に以下のエラーが出た場合は文法が間違っています。
yを押して、半角スペースや書き方をもう一度見直してみて下さい。
crontab: errors in crontab file, can't install
Do you want to retry the same edit?
#最後に
自動実行できましたでしょうか。
私はこれまで基本Windowユーザで、pythonはWindowsで書いていました。
自動実行には標準でインストールされている「タスクスケジューラ」を利用していました。
まぁこれが前回の実行結果→[0x1]で止まっていることが多いです。。。昨日まで動いていたのに・・・。
その原因追求に工数がかかります。
今のところWindowsよりmacOSの方が安定している印象です。
ご参考になれば幸いです。