Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengekor Fail Log dalam Python Tanpa Menyekat?

Bagaimanakah Saya Boleh Mengekor Fail Log dalam Python Tanpa Menyekat?

Linda Hamilton
Linda Hamiltonasal
2024-11-16 07:19:03928semak imbas

How Can I Tail Log Files in Python Without Blocking?

Python Tail: Tailing Log Fail Tanpa Menyekat

Dalam Python, tailing fail log tanpa menyekat atau mengunci boleh dicapai menggunakan pelbagai kaedah. Satu pendekatan yang biasa digunakan melibatkan penggunaan modul subproses dalam kombinasi dengan modul terpilih.

Tailing Tidak Menghalang:

Apabila bekerja dalam persekitaran Linux, anda boleh memanfaatkan pilih modul untuk meninjau paip keluaran subproses yang menjalankan perintah ekor. Berikut ialah contoh:

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)

Kod ini menggunakan kaedah select.poll() untuk menyemak sama ada terdapat data baharu yang tersedia pada paip output. Apabila ia mengesan baris baharu, ia mencetaknya.

Menyekat Tailing:

Untuk pelaksanaan yang lebih mudah, anda boleh menggunakan modul subproses tanpa modul pilihan. Walau bagaimanapun, kaedah ini menyekat skrip sehingga proses ekor ditutup.

import subprocess
f = subprocess.Popen(['tail', '-F', filename],
                   stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
    line = f.stdout.readline()
    print(line)

Kod ini membaca dan mencetak baris baharu apabila ia muncul, tetapi ia menyekat sehingga proses ekor ditamatkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekor Fail Log dalam Python Tanpa Menyekat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn