Python Tail: ブロックせずにログ ファイルを追跡する
Python では、さまざまな方法を使用して、ブロックやロックを行わずにログ ファイルを追跡することができます。一般的に使用されるアプローチの 1 つは、subprocess モジュールを select モジュールと組み合わせて使用することです。
ノンブロッキング テーリング:
Linux 環境で作業する場合、 tail コマンドを実行しているサブプロセスの出力パイプをポーリングするモジュールを選択します。以下に例を示します。
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)
このコードは、select.poll() メソッドを使用して、出力パイプに利用可能な新しいデータがあるかどうかを確認します。新しい行を検出すると、それらを出力します。
Blocking Tailing:
より簡単に実装するには、select モジュールを使用せずに subprocess モジュールを使用できます。ただし、このメソッドは、末尾のプロセスが終了するまでスクリプトをブロックします。
import subprocess f = subprocess.Popen(['tail', '-F', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE) while True: line = f.stdout.readline() print(line)
このコードは、出現した新しい行を読み取って出力しますが、末尾のプロセスが終了するまでブロックします。
以上がPython でブロックせずにログ ファイルを追跡するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。