前提・実現したいこと
Twitter APIを用いてツイート等のデータを取得し、csvファイルに書き出す自作モジュールを定期実行するためにscheduleライブラリを利用したいと考えています。
しかし、ツイート取得の自作モジュールのインポートが上手くいかず、
ツイートの取得もcsvへの書き出しもできません。
本ページに載せたコードを実行すれば、5分ごとに同じディレクトリ内にあるツイート取得ファイルのMain関数が呼び出されることを希望しています。
試したコードを記載しますので、誤っている点をご指摘いただけると幸いです。
なお、呼び出し希望のファイルについては問題なく実行されますので、内容は割愛しております。
試したソースコードと発生している問題・エラーメッセージ
5分ごとに定期実行するコードです。
Python
1import schedule 2import time 3import tweetget_sys05 as ts5 #自作モジュール 4 5 6def Main(): 7 ts5.Main() 8 9 10if __name__ == "__main__": 11 schedule.every(5).seconds.do(Main) 12 13 n = 0 14 15 while n == 5: 16 schedule.run_pending() 17 time.sleep(1) 18 19 n + 1
上記のソースコードではエラーメッセージすら表示されず、何も実行されませんでした。
Python
1import schedule 2import time 3import tweetget_sys05 as ts5 4 5 6def Job(): 7 ts5.Main() 8 9def Main(): 10 11 schedule.every(5).seconds.do(Job) 12 13 n = 0 14 15 while n == 5: 16 schedule.run_pending() 17 time.sleep(1) 18 19 n + 1 20 21 22if __name__ == "__main__": 23 24 25 Main()
上記のように、自作モジュールを他の関数として分け、
稼働させるファイルの方のMain関数で呼び出す形でも実行されませんでした。
また、エラーメッセージの類も表示されていません。
import schedule import time import tweetget_sys05 as ts5 def Job(): ts5.Main() if __name__ == "__main__": schedule.every(5).seconds.do(Job) n = 0 while n == 5: schedule.run_pending() time.sleep(1) n + 1
また、Mainという関数名が被っているのが問題かと思い、
実行する関数名を変更しましたが、
Reloaded modules: tweetget_sys05
と表示され、やはり実行されませんでした。
エラーメッセージ等も表示されていません。
以上、三つのコードを実行しても書き込むcsvファイルの「最後に開いた日」が変更されていないため、
呼び出し希望のモジュールは稼働していないと思われます。
Python
1import tweetget_sys05 as ts5 2 3 4ts5.Main()
一方で、単純に上記のように読み込むと実行できるので
インポート表記のミスやインポート元のファイルの不備ではなさそうです。
また作業用ファイルとモジュールとして使いたいファイルは同じディレクトリ内にあります。
補足情報(FW/ツールのバージョンなど)
Python 3.8.8 (default, Apr 13 2021, 12:59:45)
Mac Book Air 2020 M1, Big Sur 11.6
回答1件
あなたの回答
tips
プレビュー