Python でログ ファイルを追跡する
Q: Python でログ ファイルを追跡する非ブロックまたはロックの方法はありますか。コマンド末尾 -F?古いメソッドはありますが、より良いソリューションやライブラリはありますか?
A: ノンブロッキング:
Linux では、サブプロセスと選択モジュールを利用すると、ノンブロッキング ソリューション:
import time import subprocess import select f = subprocess.Popen(['tail','-F',filename],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) p = select.poll() p.register(f.stdout) while True: if p.poll(1): print f.stdout.readline() time.sleep(1)
このソリューションは、新しいデータの出力パイプをポーリングし、すぐに表示します。 time.sleep(1) と print f.stdout.readline() をカスタム機能に置き換えることができます。
ブロッキング:
ブロッキング アプローチの場合は、次を使用できます。追加モジュールのない subprocess モジュール:
import subprocess f = subprocess.Popen(['tail','-F',filename],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) while True: line = f.stdout.readline() print line
このメソッドは、出現した新しい行も出力しますが、末尾のプロセスが終了するまで実行を停止します (例: f.kill() 経由)。
以上がPython でブロックせずにログ ファイルを追跡する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。