キノコードでは、今までPythonでの自動化プログラムを色々紹介してきました。
でも、それらのプログラムを決まった時間に実行していませんか?
面倒ですよね。
その作業があるために、作業を中断したり、集中力が切れたり、あるいはその作業を忘れていたりしませんか?
今回この動画でお教えてするスケジュール実行によって解決することができます。パソコンを起動さえしていれば、24時間いつでも毎日でも毎分でもプログラムを実行することができます。
仕事でデータ集計をしている方、特定のサイトからデータをダウンロードしている方、株や為替、仮想通貨の分析を自動化したい方にお役立ちできる内容です。
この動画も初心者の方でもわかるように解説をしました。これを覚えてもらえればパソコンを起動しているだけで24時間、パソコンがあなたの代わりに作業をしてくれます。無料で働いてくれる人も見つけられたようなものです。
本編動画でぜひやり方を習得してください。
00:00 はじめに
02:19 自動実行するプログラムの説明
05:50 Macで自動実行するための設定方法
17:51 Windowsで自動実行するための設定方法
22:25 Mac、Windowsのどちらでも自動実行できるDockerを用いた設定方法
27:59 おわりに
▼関連動画
【Python超入門コース】03.環境構築 for Windows|プログラミングをする準備をしよう!【プログラミング初心者向け入門講座】
【Python超入門コース】03.環境構築 for Mac|プログラミングをする準備をしよう!【プログラミング初心者向け入門講座】
Pythonで面倒なExcelの仕事を自動化しよう【第一弾】
Pythonで面倒な「ブラウザ操作」や「データ収集」の作業を自動化しよう
Pythonで面倒な「メール配信(Gmail)」の作業を自動化しよう
Python超入門コース
Pandas入門コース
理屈はさておき、Dockerを使って、あっという間にPythonのデータ分析の環境構築をする|WindowsとMacの説明あり
▼自己紹介
現在:フリーランス(マーケティング関連の人工知能開発、データ分析や業務自動化など)
前職:リクルート
▼SNS
Twitter : https://twitter.com/kino_code/likes
Facebook :https://www.facebook.com/%E3%82%AD%E3%83%8E%E3%82%B3%E3%83%BC%E3%83%89-105693727500005/
▼文字書き起こし
スケジュール実行は、Macではcron、Windowsでははタスクスケジューラーを使います。その方法を説明した後に、最後に、MacでもWindowsでも実行できるようにDockerを用いた設定方法を紹介します。
パソコンには既にPythonがインストールされている前提で話を進めます。もしインストールが済んでいない場合は、「Pythonの環境構築の方法」の動画を参考にしていてください。この動画では、VSCodeとPythonのディストリビューションのanacondaをインストールしています。
また、Dockerを使ったスケジュール実行は、DockerとGitをインストール済みの方向けです。Dockerのインストールについては「Dockerを用いた設定方法」を参考にしてください。Gitについては動画の準備がまだないですが、近々作成予定です。難しくはないので「Git インストール方法」などで検索をしてみてください。
ーーー
import datetime
import pandas as pd
dt_now = datetime.datetime.now()
df = pd.DataFrame()
df.to_csv(‘/Users/kinocode/Documents/MyTest/test_‘+str(dt_now)+‘.csv’)
print(str(dt_now),‘fin’)”
ーーー
さて、まず、どんなプログラムをスケジュール実行をするのか説明をします。
VSCodeでファイルを作成してみましょう。VSCodeはMac、Windowsの方のどちらでも使うことができます。
VSCodeの設定方法については、Pythonの環境構築の動画で説明をしています。
VSCodeの設定がまだの方はそちらをご覧ください。
さて、どのようなプログラムを作成するかの説明に戻ります。
今回は、簡単なソースコードにします。
Pythonを使ってcsvファイルを書き出すという処理にします。このソースコードについてもっと知りたい方は、「Pandas入門コース」があります。右上に出ているカードからご覧ください。
datetimeのライブラリで現在の時間を取得。それを文字列に変えた後でdf_nowという変数に代入。そして、データフレームを作成します。データフレームはカラムが「datetime,name,greet」の3つ。そして現在の時刻と、「kinocode」「Hello cron」という文字列を代入します。そして、そのデータフレームをCSVファイルに書き出します。CSVファイルには、現在の時間を挿入して、何時に書き出せたかわかるようにします。またprint関数を使って、現在の時刻と「Hello world from cron」という文字列を表示させてみましょう。データフレームをtest_と書いて、現在の時間をいれたcsvファイルとして書き出します。実行してみましょう。CSVファイルが作成できました。このようなcsvファイルです。このように書き出すことができます。
このプログラムファイルを「app.py」と名前をつけて保存をしてください。
今は、データフレームを作成して書き出していますが、ここに違う処理を書けば、仕事を自動化させる処理に変えることができます。例えば、データベースからデータ取得してPandasで集計をしたり、集計をした結果をエクセルやGoogleスプレッドシートに書き出しをしたり、Webスクレイピングを実行したり、Gmailを送ったり、機械学習のライブラリでデータ分析をしたりなど。
色々なプログラムを自動化することができます。
さて、今回は、簡単なプログラムですがデータフレームをcsvファイルで1分おき書き出すスケジュール実行をしていきましょう。
まずMacでの設定方法を解説します。
Macには、もともとcronというツールが入っています。
cronとは、macOSやLinuxに入っているプログラムで、ユーザーが設定したスケジュール通りにプログラムを自動実行してくれるものになります。です。
“このcronを使うことで、決まった時刻に決まったプログラムを実行するスケジュール自動実行をパソコンに行わせることができます。cronを使うと、パソコンが決まった時刻に決まったプログラムを自動で実行する、ということです。
また、定期実行が終わったらlogファイルとものに実行結果を記録することもできます。エラーが出た時などにわかりやすいのでため、その設定も解説するので覚えていきましょう。”
プログラムを保存するフォルダを用意します。私は、Macの書類つまりDocumentの中にpython_cronというフォルダを作成しました。
そして、最初に作ったpythonファイルをこのフォルダに保存をします。
続いて、cronの設定を行います。
まず、cronからパソコン上のファイルにアクセスできるように設定をします。
これをしなければ、cronが動いてくれません。
システム環境設定を開きます。セキュリティとプライバシーをクリック。 プライバシーのタブ。フルディスクアクセス をクリック。鍵マークがあるので、それをクリックした上で、macのロックを解除するときに使うパスワードを入力。プラスの矢印をクリックすると新しい画面が開くので、command+shift+Gのキーを同時に押します。そうすると、フォルダの場所を入力できますのでそこに「/usr/sbin/cron」と入力します。そうすると「/usr/sbin/」の中のcronが選択された状態になっているので、開くをクリック。cronが追加され、チェックが入っていることを確認をした上で、もう一度鍵マークをクリックしてロックをかけます。画面は閉じておきましょう。
(続きはブログへ)
▼文字書き起こしブログ
https://kino-code.com/python_autorun/
▼GitHub
https://github.com/kino-code/docker-cron
#Python自動化 #cron #タスクスケジューラ
▼お仕事のお問い合わせ
キノコードでは、仕事の自動化の開発業務&コンサルティング業務のみを現在受け付けております。
お問い合わせ先かTwitterのDMか、「キノコードトップページ→概要」にあるメールアドレスまでお問い合わせください。
コメント
23:00 前半のくだりを聞いていてよく分からなかったのですが、結局dockerだけでは、自分の実機の電源を落としたままスクリプトを走らせることはできないんですよね??
いつも動画楽しく拝見しております。Lineの自動通知をやりたく、色々と試行錯誤しているのですが、
以下のエラーがcron.logにでてきます。vs codeで実行すると問題なくできるのですが、どうすればよろしいかご教示いただけませんでしょうか。基礎的な質問だと思うのですが、、よろしくお願いします。
File “/Users/○○○/Desktop/MyPython/notify.py”, line 1, in
import pip
ImportError: No module named pip
こんにちは
いつも動画で勉強させてもらっています。
一つ質問させていただきたいです。
タスクスケジューラを使用すると
urllib.error.URLError:
とエラーが出てしまって処理が止まってしまします。
回避策はなにかございませんでしょうか。
アドバイスいただけたら幸いです。