【仕事の自動化】Pythonでの自動化プログラムを、さらに効率化させる「スケジュール実行」のやり方【初心者でもわかる】
HTML-код
- Опубликовано: 26 июл 2024
- キノコードでは、今まで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.環境構築 ...
【Python超入門コース】03.環境構築 for Mac|プログラミングをする準備をしよう!【プログラミング初心者向け入門講座】
• 【Python超入門コース】03.環境構築 ...
Pythonで面倒なExcelの仕事を自動化しよう【第一弾】
• Pythonで面倒なExcelの仕事を自動化...
Pythonで面倒な「ブラウザ操作」や「データ収集」の作業を自動化しよう
• Pythonで面倒な「ブラウザ操作」や「デー...
Pythonで面倒な「メール配信(Gmail)」の作業を自動化しよう
• Pythonで面倒な「メール配信(Gmail...
Python超入門コース
• Python超入門コース 合併版|Pytho...
Pandas入門コース
• Pandas入門コース|プログラミング初心者...
理屈はさておき、Dockerを使って、あっという間にPythonのデータ分析の環境構築をする|WindowsとMacの説明あり
• 理屈はさておき、Dockerを使って、あっと...
▼自己紹介
現在:フリーランス(マーケティング関連の人工知能開発、データ分析や業務自動化など)
前職:リクルート
▼SNS
Twitter : / likes
Facebook : / %e3%82%ad%e3%83%8e%e3%...
▼文字書き起こし
スケジュール実行は、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が追加され、チェックが入っていることを確認をした上で、もう一度鍵マークをクリックしてロックをかけます。画面は閉じておきましょう。
(続きはブログへ)
▼文字書き起こしブログ
kino-code.com/python_autorun/
▼GitHub
github.com/kino-code/docker-cron
#Python自動化 #cron #タスクスケジューラ
▼お仕事のお問い合わせ
キノコードでは、仕事の自動化の開発業務&コンサルティング業務のみを現在受け付けております。
お問い合わせ先かTwitterのDMか、「キノコードトップページ→概要」にあるメールアドレスまでお問い合わせください。
こちらの動画を見て自動実行できるようになりました!本当にありがとうございます!!
とても素晴らしいチャンネルですね。
登録させていただきました。
これからも投稿をお待ちしてます。
いつも情報をありがとうございます!
自動実行の動画待ってました!ありがとうございます!!!
今後も出していくので、お楽しみになさってくださいね!
スピーキングに抑揚が出ていて、以前よりもキノコードさんカッコいいです!!😆
自動実行めちゃめちゃ興味あって、楽しく見させていただきます!!👍️😆
これからも動画投稿がんばってください!!!👏👏
ありがとうございます!昨日収録した新しい動画は、抑揚が足りなかったと思うので改善します!
23:00 前半のくだりを聞いていてよく分からなかったのですが、結局dockerだけでは、自分の実機の電源を落としたままスクリプトを走らせることはできないんですよね??
いつもありがとうございます
一度挫折しましたが、キノコードさんのコメントでもう一度頑張ろうと思います
ぜひ頑張ってください!サポートできる動画を出していきますね!
@@kinocode ありがとうございます(TT)
しいていうなら毎回パンダスに全文字打つのがしんどくなってきたのですが動画の投稿に使われたパンダスデータやパイソンデータがあればそれをほしいです。
そうすればもっと早く身に付けられる気がします。。。無理言ってすみません(TT)ホントにいつもありがとうございます。。
※ちなみに今パンダス超入門5シリーズ勉強中です。。。
Webサイトから、ソースコードが無料でダウンロードできますのでぜひご活用ください!
kino-code.com
*また、それぞれのレッスンの備考欄にリンクがあります。
@@kinocode
ぁ、ありがとうございます(TT)
パイソン超入門からパンダス超入門のいまの今まで自分でて入力してました、それもあって挫折しそうになってました
ホントにありがとうございます(TT)
キノコードさんに一生付いてきます!!
@@kinocode キノコードさん現在サイトでコードをダウンロードしたらエラーでみれませんなぜでしょうか
facebookに投稿したものをlineのタイムラインにも投稿することはできますか?pythonなど使って iftttやzapierなどの自動化ツールを調べたのですができないみたいなので
26:38
CSVのスケージュール実行の部分ですが1時間以上待っても自動作成が開始されません。それ以外の設定は既に終えていてエラーなどの発生もありませんでした。考えられる原因は何でしょうか?わかる方いましたらご教授お願い致します。
こんにちは
いつも動画で勉強させてもらっています。
一つ質問させていただきたいです。
タスクスケジューラを使用すると
urllib.error.URLError:
とエラーが出てしまって処理が止まってしまします。
回避策はなにかございませんでしょうか。
アドバイスいただけたら幸いです。
これは、定期実行するには、常にMacを立ち上げておかなければならないということでしょうか?
タスクスケジューラでpythonファイルを動かしたいのですが、実行ボタン押下後、「実行中」となるのですが何も起動しません。ファイルが重すぎるからでしょうか?
他の簡単なpythonファイルではタスクスケジューラでの動作確認できています。
こんにちは、僕は(unity)でiosアプリを作りたいと思っています。そのためにc#を今勉強しています。
ですが、ここ最近Python.やJavaScriptの方が人気が高い事を知りました。そこで疑問です
今c#を勉強する必要はありますか?
c#の将来性はどんな感じですか?
また、Python.やJavaScriptはどのくらいで習得をする事が出来ますか?
いろいろ質問してすいません。。。。
こんな動画も作っているので、ご視聴ください!ruclips.net/video/QEy3VGw8eFE/видео.html
ただし、やはり「作りたいもの」によると思います。作りたいものを決めてからじゃないと、人気などの左右されて軸がぶれてしまうと思うので、まずは作りたいものから始めることをお勧めします。
Dockerで作成したファイルをxserver等のレンサバで動かす方法が知りたいです。
承知しました。動画作ります。
キノコード / プログラミング学習動画のRUclipsr やったー✌️
最初うまく動かなくて困ったけど、タスクスケジューラで実行できました😊
VSCodeやWindowsコマンドプロンプトから実行してみたら、
import pandasでエラーが出ていて、
環境変数にAnaconda3\Library\binのパスを追加したらうまく動いたっぽいです
手動で環境変数を追加したときにパスが足りてなかっただけでした
今この動画を見てdockerでの自動化をしようとしているのですが,この動画の通りに行うとコンテナは作れるようなのですが,dockerの中に入って操作をしたところ26:10のところで[No such file or ~~]と出てきてうまくできませんでした.
clone元のkino-codeのgithubを見たところ,この動画で使用されるkino-code/docker-cronのdockerfileやdocker-compose.yml の内容が kino-code/docker-python のものと同じになっていますがこの辺りは問題ありませんか?
ご指摘ありがとうございました!!
Githubのファイルに間違いがありましたので、修正いたしました。
ご迷惑おかけしてすみませんでした...。
いつも動画楽しく拝見しております。Lineの自動通知をやりたく、色々と試行錯誤しているのですが、
以下のエラーがcron.logにでてきます。vs codeで実行すると問題なくできるのですが、どうすればよろしいかご教示いただけませんでしょうか。基礎的な質問だと思うのですが、、よろしくお願いします。
File "/Users/○○○/Desktop/MyPython/notify.py", line 1, in
import pip
ImportError: No module named pip
エラーが出ているpyファイルの1行目を「#」でコメントアウトしてみてはどうでしょうか?
@@kinocode PATHの設定をいじったらできました。ありがとうございます。これからも微力ながら応援させていただきます!
Windows11でタスクスケジューラで実行しても、
なぜかCSVファイルが作成されず悩んでおりましたが......
いろいろググってみて
C:\Users(ユーザー名)\Anaconda3
のほかに
C:\Users(ユーザー名)\Anaconda3\Scripts
C:\Users(ユーザー名)\Anaconda3\Library\bin
の二つを環境変数のPathに追加するとCSVファイルが作成されるようになりました。
良ければ詳しく教えてください!!
上記の二文をコピペしてPathという場所に貼ればいいのでしょうか!?
自分も作成できず困っております
いつも楽しく動画を視聴しております。
素人ながら日々勉強し業務を効率したいと考えております。
Line Notifyを利用し電車遅延情報等を毎朝定期時刻にpyファイル実行を設定しました。
単独では実行に成功しております。(Lineに遅延情報が表示されます)
しかし、タスクスケジューラを利用するとどうしてもエラー表示されます。
他のpyファイルもタスクスケジューラを利用して実行しようとしてもエラーが表示されます。
環境変数も設定確認済みです。
エラー確認の為、dosコマンドで確認するとsmさんと同じ様なエラー内容になります。
但し【Anaconda Prompt (anaconda3)】から実行するとpyファイルをドラッグで実行できます。
私の操作手順は下記の通りです。
検索ボックスより【cmd】と入力すると
【コマンドプロンプト・Anaconda Prompt (anaconda3)】をどちらを起動するか選択できるようになります。
【Anaconda Prompt (anaconda3)】を選択し起動する。→pyファイルをドラッグ→エンター→実行
【Anaconda Prompt (anaconda3)】プロパティで本体のパスを確認すると下記のパスになります。
C:\Windows\System32のcmd.exeです。
※コマンドプロンプトからだと実行は出来ない(但しpythonと入力し実行すると画面上では>>>と表示され計算等は出来るようになる)
私の環境だとタスクスケジューラでの設定は難しいのでしょうか。
私も今後を考えてpyを自動実行したいです。
長文で申し訳ございませんがネットで調べても回答が見つからないため、質問させて頂きました。
ご視聴ありがとうございます!
電車の遅延情報とはいい考えですね〜!便利そうです。
Windowsの環境構築として、直接Anacondaをインストールされているのかと思います。
環境変数を設定されたと思いますが、こちらの3つ目を追加してみていただけますか?
1「C:\Users\ユーザー名\anaconda3」
2「C:\Users\ユーザー名\anaconda3\Scripts」※動画で説明済み
3「C:\Users\ユーザー名\anaconda3\Library\bin」※動画で説明なし
3の追加でタスクスケジューラから実行出来ました。
本当にありがとうございます。
よかったです!!
説明不足がありましたね…
大変失礼いたしました。
さて。どんどん生活を便利にしちゃいましょう!
ipynbファイルはどのようにしたら良いのでしょうか。m(_ _)m
自動化したいファイルがipynbファイルの状態ということですか?
自動化のためには、.pyファイルに変換する(書き換える)ことをおすすめします!
返信ありがとうございます。
やっぱり変換した方がいいんですね。再トライしてみたいと思います!
ラズパイでも可能ですかね?
◎スケジュール実行
タスクスケジュール
doker
WINDOWSでタスクスケジューラを何度やってもうまくいきません。
VSコードでのファイル単体の実行は成功しましたが、
右クリックして「実行する」をクリックしても実行されません。
パスの確認は何度も確認しました。
私は馬鹿ではありませんので、首をかしげています。
実際にWINDOWSでDockerを使わないで成功した人の確率を知りたいです。
恥を忍んで書きました。
それは、、、納得できないですよね。。
きっと何度も見直されたりやり直されたりしていらっしゃるのでしょうが、、、そういう時こそ小さな見落としもあったりして、私は悔しい思いをしたことは何度もあります...!
「実行する」をクリックすると、「状態」が「実行中」となります。
手動でこのように実行させた場合は、設定時刻の前でも設定したタスクが実行されます。
状態が「準備完了」となっていれば、トリガーで設定した時刻になれば実行されます。
また、作成したタスクを右クリック→プロパティで「履歴」タブが表示されますので、そこに表示されるログも確認してみてください!
とはいえsmさんの詳細を確認できないので申し訳ないですが、詳しく解説されている方のブログを紹介させていただきます。解決を祈ります!
jm1xtk.dip.jp/cnt/109_task/index.php
@@kinocode
どうしても完成させたいのです。再度書かせてください。すべての詳細をさらけ出す覚悟があります。
問題はタスクスケジューラではなく、PYTHONの環境にあるのではないかと思っています。
ご説明の中で、3:37あたりで、VSCodeからプログラムを書くとあります。
JupyterLabではいけないのでしょうか。疑問点の ① です。
ANACONDA NAVIGATORから VSCodeをLaunchしてapp.pyを書きます。
Ctrl+F5のデバッグなしで実行をします。
c:\Users\abxab\Documents\python-cron下に test_20201001-094220.csv ができております。
さて、タスクスケジューラを設定しまして、準備完了と表示されました。
実行時間が来てどうなるかというと、その瞬間、画面がちらつくのです。
コンソール画面というのかターミナルというのか、昔のMSDOSのコマンド入力画面といいますか、そのような画面が、実行時間(5分間隔)が来るたびに一瞬ちらつくのです。
ただ、csv はできません。
私の質問に答えていただけるなら、今晩にでも土佐日記を枕にしようと覚悟はできております。
私の純なる思いが伝わりますように!
@@user-xl8fk7xm5e
スポーツとなっていますが、s m と同じ人物です。
初めての投稿なので間違えてしまいました。
すみません。
@@user-xl8fk7xm5e windowsのコマンドプロンプトでcd c:\Users\abxab\Documents\python-cronとタイプした後にpython app.pyとタイプしたら動きますか?これで動かない場合はpassが正確に通っていない可能性が高いです.異なるバージョンのpythonがPC上に複数インストールされていたりするとpassが正しく通せていない場合があります.
@@sumitani73 CheMLさんがおっしゃっているように、コマンドプロンプトで実行した場合、エラーメッセージが見れます。
タスクスケジューラで実行した場合、エラーの時はコマンド画面が消えてしまうので、エラー内容がわからず、
SMさんは「一瞬ちらつく」エラーメッセージが読めない状態です。
私も似たような経験をしました。
私のケースでは、Gmail自動送信
ruclips.net/video/AMzlyi9rvQE/видео.html
のプログラムで、
TypeError: write() argument must be str, not bytes
というエラーが出て、print()で引っかかっていました。
対処法は、
# エンコードを指定
import sys, codecs, io
sys.stdout = codecs.getwriter("utf-8")(sys.stdout)
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
とすることです。
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
を追記したわけです。
参考サイト
teratail.com/questions/118005
他のエラーでも、TypeError: 以降をググれば、ほとんどのケースは解決できます。
good luck.