こちらの記事を参考に フォルダ監視を行おうとしています。
本日まるっとコピペして 記事に紹介されている動きはできたのですが、やることをやったら(例えば監視されたフォルダに新たにファイルが加わったら別フォルダへ退避)、当該アプリケーションの実行自体を終える ことを達成したいです。
質問
どういう記述を追加すれば 自身の実行を終わらせることができるでしょうか。 以下の例ではprint文のあとに実行を終えることを意味します。
python
1from watchdog.events import FileSystemEventHandler 2from watchdog.observers import Observer 3 4import os 5import time 6 7#監視したいフォルダのパス 8target_dir = "D:\TEST" 9 10 11class ChangeHandler(FileSystemEventHandler): 12 def on_created(self, event): 13 filepath = event.src_path 14 filename = os.path.basename(filepath) 15 print('%sができました' % filename) 16 17 # sys.sys.exit(0) ---> タスクマネージャでみたら 相変わらず 動いていたので効いていない様子 18 19 20if __name__ in '__main__': 21 while 1: 22 event_handler = ChangeHandler() 23 observer = Observer() 24 observer.schedule(event_handler, target_dir, recursive=True) 25 observer.start() 26 try: 27 while True: 28 time.sleep(0.1) 29 except KeyboardInterrupt: 30 observer.stop() 31 observer.join()
自分で試したこと
sys.exit(0)を 入れてみましたが タスクマネージャで確認すると 相変わらず うごきっぱなしの状況が確認できました。
タスクマネージャで 確認している理由は exe化する際に --noconsoleのオプションを与えているからです。
(サーバでの運用想定で 当該アプリは 前もってexe化が必要となります)
実際は 検知時に print文を実行するのではなく ファイルのコピー退避を検討しています。
何卒よろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/11 11:48