【ページ更新日:2020年9月28日】
毎日Pythonでは、毎日簡単なPythonのプログラムコードを紹介していきます。
<参考YouTube動画>キノコードさんのYouTube動画
『【仕事の自動化】Pythonでの自動化プログラムを、さらに効率化させる「スケジュール実行」のやり方【初心者でもわかる】』
キノコードさんの動画はハンズオン形式なので、手を動かしながら勉強したい方にはオススメです。説明もとても丁寧でわかりやすいです。
目次
今日のプログラム
今日のコード
今日は、毎日Python_6日目で扱ったプログラムを日時指定をして自動実行する方法を紹介します。
プログラムは次の通りです。
import datetime import pandas as pd dt_now = str(datetime.datetime.now().strftime('%Y%m%d-%H%M%S')) df = pd.DataFrame( [[dt_now, "maitatomoya", "Hello cron"]], columns = ['datetime', 'name', 'greet']) df.to_csv('/Users/maitatomoya/Desktop/PG/Program_Python/e_python/python-cron/test_'+dt_now+'.csv') print(dt_now, ' Hello world from cron')
Pythonはインテンド(行頭のスペース)がズレるだけでエラーの原因になります。
コピペする場合は次のコードからしてください。
コードのURLはコチラです。
今日のポイント
- cron
- vim
今日の出力
今日の出力は次の通りです。
1分おきにプログラム実行時間を記録したCSVファイルが自動で作成されていきます。
今日のプログラムの説明
今日のcronを使用して、プログラムを自動実行する方法を説明します。
※ 以下の説明はMacでの設定方法になります。
準備① 環境変数を設定する
ターミナルで次のコマンドを実行します。
$ export EDITOR=vim
- これでエディタを起動するときに、自動で開くエディタとしてvimを選択するコマンドです
- exportは環境変数を設定するコマンドです
準備② PATHを確認する
ターミナルで次のコマンドを実行します。
$ echo $PATH
- これでPATHという環境変数を確認できます
- PATHは、ファイルが実行されるときのプログラムが保存されているファルダを指定するものです
- 表示されたパスをそのままコピーしておきます(メモ)
エディタ(vim)を起動する
ターミナルで次のコマンドを実行します。
$ crontab -e
- これで、crontabをvimで作成(編集)できるようになります
- crontabとは、スケジュール自動実行するcronを設定するファイルです
- スケジュール自動実行の処理の設定内容を書きます
- 「 crontab -r 」のコマンドを実行すると、設定がすべて削除されるので注意!
vimの使い方
- 「 i 」を押すと「INSERTモード」になり、編集できるようになります
- 終了するときは「esc」キーをおして「:wq」と入力すると上書き保存をして終了します
- 「:q!」と入力すると保存せずに終了します
vimでcrontabを作成する
PATH=/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # min hour day month weekday command */1 * * * * python /usr/src/app/app.py >> /usr/src/app/cron.log 2>&1
- 最初に環境変数PATHの設定を行う(コピーしていたものを貼り付ける)
- #はコメントアウト(説明文)
- min(分)には、0〜59
- hour(時)には、0〜23
- day(日)には、1〜31
- month(分)には、1〜12
- weekday(曜日)には、0〜7(0と7はともに日曜日)
- 「 * 」はすべて
- 「 / 」は〜おきに
- 複数指定はカンマで区切る
- 範囲指定はハイフン
- 「python」はターミナル 上でPythonファイルを実行するのと同じ
- 「python」の後には、実行するPythonファイルが保存されているディレクトリの絶対パスを指定する
- パスの後はPythonのファイル名を書く
- 「 >> 」と書くことで、実行ファイルの出力結果を特定のログファイルに追記できる
- 「 >> 」でファイルへの追記
- 「 >」でファイルへの上書き
- 「 2>&1 」でエラーもログファイルに出力することができる
- 「 0 」と入力すると標準入力
- 「 1 」と入力すると標準出力
- 「 2 」と入力すると標準エラー出力
- この部分の「 > 」は、リダイレクト
上書き保存(「:wq」と入力)すると、プログラムの自動実行が始まります。
自動実行をとめる方法
再度vimでcrontabを編集し、日時指定した1行をコメントアウトして上書き保存すると、停止します。