問題タブ [python-watchdog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python ウォッチドッグが監視するファイルに対するファイル アクションが原因で、終わりのないループで終了する
ウォッチドッグを使用してディレクトリを監視し、変更されたばかりのファイルに対してアクションを実行する python スクリプトを作成しています。私の問題は、スクリプトがファイルに対して実行するアクションが、ウォッチドッグのイベント リストを同じファイルで補充するため、スクリプトが無限ループに入ることです。
とにかく、変更されたファイルを監視し、そのアクションがウォッチドッグを再度トリガーすることなく、それらに対してアクションを実行するには?
オブザーバーを一時停止することは、mtime 更新機能を実行するためのアイデアだと思いましたが、これが発生している間、ディレクトリにコピーされた他のファイルは監視されない可能性があります。
ファイルシステムでウォッチドッグがこの関数アクションを破棄する方法はありますか? それとも、ウォッチドッグに、スクリプト自体によって実行されたすべてのアクションを破棄するように指示しますか?
よろしく、オジー。
python - ウォッチドッグ (Python のライブラリ) - ファイルが変更されたときにシグナルを送信する方法は?
特定のファイルがいつ変更されたかを検出するクラスの私のコード:
そして、アプリケーション自体のコード スニペット:
問題は、ファイルが変更されると、1 のノンストップ ストリームが印刷されることです。クラスでそのように信号が発信/接続されてWatchOutForFileModifications
はならないことはわかっていますが、API がどのようになっているのかわかりません:http: //pythonhosted.org/watchdog/api.html#watchdog.observers.api。 EventEmitter -- 動作するはずです。少なくとも、これはファイルの変更をリッスンするために使用する必要がある API であると思います。
編集
いくつかの変更後の作業コード:
python - Pythonのロギングライブラリを使用してOSユーザーのユーザー名を取得するには?
追加、削除、変更などの変更の特定のパスを監視するために使用python-watchdog
しています。時間とメッセージの情報とともに、その変更を行ったユーザーのユーザー名を取得したいと考えています。を見ていてgetpass
、ロギング自体の中で変数を探しましたが、何も見つかりませんでした。
手がかりはありますか?私のウォッチドッグコードは以下のとおりです
python - Watchdog がこの OS エラーをスローするのはなぜですか?
Python でディレクトリの変更を監視するデーモンを作成しようとしていますが、本当に助けが必要です。
これまでのところ、inotify と Watchdog の両方を試しました。どちらのパッケージも、フロント ページでサンプル コードを実行すると、大量のエラーがスローされました。これらのエラーが発生する理由を誰か教えてもらえますか?
https://pypi.python.org/pypi/watchdogのサンプル コードは次のとおりです。
コードを実行したときの端末出力は次のとおりです。
python - Kivy テンプレートのライブ リロード
実行時に KivyLang UI ファイル (.kv ファイル) をライブでリロードする何かを作成しようとしています。*.kv ファイルを IDE に保存すると、UI がウィンドウで更新されるようにします。このhttp://livereload.com/プラグインの動作に少し似ています。
これが私の試みです。
変更されたフレームワーク コード
次のファイルを少し変更し、コードを少し追加しました: https://github.com/kivy/kivy/blob/master/kivy/core/window/window_pygame.py
新しいインポート
新しいクラス
新しいメインループ
オブザーバーに挟まれただけ
完全なファイル
window_pygame.py
問題
ここまでは順調ですね。ファイル ウォッチャーは正常に動作しており、*.kv ファイルを変更するたびにon_modified
関数がトリガーされます。
しかし、リロード部分は、固定ウィジェットが 1 つある場合にのみ機能します。.kv ファイルを変更してウィジェットを追加すると、キャンバスが完全にクリーンアップされず、以前のウィジェットが残ったままになります。
EventLoop.window.canvas.clear()
以前のコンテンツをクリーンアップするには不十分なようです。
間違った方向に進みすぎていませんか? ここに似たようなものがあることに気付きました: https://github.com/kivy/pythonarしかし、実行中のアプリケーションを停止してリロードしたくありません。
サンプル Hello World アプリ
hello_kivy.py
hellokivy.kv