前提・実現したいこと
pythonのwatchdogを用いてファイルの監視を行い,ファイルが生成されたときにクラス外の処理に移るプログラムを作成しています.
発生している問題・エラーメッセージ
on_created() missing 1 required positional argument: 'event'
python
class ChangeHandler(FileSystemEventHandler): def on_created(self, event): print('[set target path 1]') for file in os.listdir('.'): if fnmatch.fnmatch(file,'*.FPP'): self.target_path_1 = os.path.join(os.path.dirname(__file__), file) print('target_path_1: ', target_path_1) return self.target_path_1 target_path_2 = ChangeHandler() with open(target_path_2.on_created(),"r+b") as f:
試したこと
on_create()の第2引数のeventが邪魔して通らない?
補足情報(FW/ツールのバージョンなど)
ちょっと設計の意図をつかみかねるので教えてください。
1) 2行目からの on_created(self, event) でなにをやらせようと考えていますか?
2) with の中の open(target_path_2.on_created(), "r+b") では、なにをしようと考えていますか?
コメントありがとうございます。
1)on_created()で,ファイルが生成されたことを検知して,target_path_1の情報をChangeHandler()外でも使いたい
2)target_path_1のファイルを開きたい
以上のように考えております。
なるほどわかってきました。
3) 上記回答の「ファイルが生成されたことを」での「ファイル」は、target_path_1 そのものを期待していますか? それとも「特定のディレクトリの中の任意のファイル」などでしょうか?
4) *.FPPというファイルがそこになかったらどうしたいですか?
5) 2)の処理「ファイルを開きたい」について、開くきっかけはなにを使おうとしていますか?
(もし「ファイルが生成されたら」であれば、1)で受け取ったその「きっかけ」を2)にわたす必要があるのだけど、そのへんの設計や実装がわからないということだろうか)
追記ありがとうございます。
3)target_path_1そのものが欲しいです。ここでのtarget_path_1の情報は'*.FPP'の情報です.'*.FPP'はバイナリファイルなので"r+b"でopenしようとしています.
4)*.FPPがなければスクリプトは実行しっぱなしですね.*.FPPは別機器から生成されるファイルなので,*.FPPが生成されたらChangeHandler以下の処理を行うようにしたいと考えています.
5)きっかけはファイルの生成です.ファイル生成→読み取り→演算→出力ができることを目指しています.
回答1件
あなたの回答
tips
プレビュー