Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Menduakan Output Aplikasi Python (Termasuk Panggilan Sistem) kepada Kedua-dua Konsol dan Fail Log?

Bagaimanakah Saya Boleh Menduakan Output Aplikasi Python (Termasuk Panggilan Sistem) kepada Kedua-dua Konsol dan Fail Log?

Susan Sarandon
Lepaskan: 2024-11-29 08:24:14
asal
239 orang telah melayarinya

How Can I Duplicate Python Application Output (Including System Calls) to Both the Console and a Log File?

Mengubah hala dan Mendua Output ke Fail Log

Anda bercita-cita untuk mencapai kefungsian utiliti 'tee' baris arahan, di mana semua output yang dihasilkan oleh aplikasi Python anda, termasuk output panggilan sistem, diduplikasi kepada log fail.

Ubah hala

Pendekatan awal anda melibatkan penduaan deskriptor fail sys.stdout dan sys.stderr ke fail log, yang berjaya mengubah hala output ke log masuk mod daemon. Walau bagaimanapun, kaedah ini kurang dalam mod interaktif kerana ia menghalang paparan serentak output pada skrin.

Penduaan

Untuk mencapai pendua, hanya membalikkan panggilan dup2 adalah tidak mencukupi. Sebaliknya, anda boleh menggunakan teknik yang memintas sys.stdout dan menduplikasi data bertulis kepada kedua-dua skrin dan fail log.

Penyelesaian

Coretan di bawah menyediakan penyelesaian yang elegan:

class Tee(object):
    def __init__(self, name, mode):
        self.file = open(name, mode)
        self.stdout = sys.stdout
        sys.stdout = self
    def __del__(self):
        sys.stdout = self.stdout
        self.file.close()
    def write(self, data):
        self.file.write(data)
        self.stdout.write(data)
    def flush(self):
        self.file.flush()
Salin selepas log masuk

Kelas ini merangkumi penduaan deskriptor fail dan menawarkan cara lancar untuk menulis kepada sys.stdout dan fail log. Anda boleh memulakan contoh Tee dan menghantar butiran fail log sebagai argumen. Instance itu kemudiannya menjadi sys.stdout baharu.

Kesimpulan

Dengan menggunakan kaedah ini, anda boleh mencapai kedua-dua pengalihan (dalam mod daemon) dan duplikasi (dalam mod interaktif ) daripada semua output aplikasi, termasuk output panggilan sistem, ke fail log.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menduakan Output Aplikasi Python (Termasuk Panggilan Sistem) kepada Kedua-dua Konsol dan Fail Log?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan