Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menstrim Baris Output Subproses mengikut Baris dalam Python?
Menstrim Baris Output Subproses mengikut Baris
Apabila berurusan dengan utiliti Linux yang bising yang digunakan melalui subproses dalam Python, dengan cekap menangkap kedua-duanya ke fail log dan memaparkannya kepada pengguna boleh mencabar.
Isu:
Pada mulanya, skrip Python cuba menangkap output subproses menggunakan kod berikut:
for line in proc.stdout: # Filter output here print("test:", line.rstrip())
Walau bagaimanapun, pendekatan ini tidak mempamerkan tingkah laku yang diingini bagi baris output penstriman dengan barisan. Sebaliknya, output hanya muncul selepas jumlah yang besar telah dijana.
Penyelesaian:
Isunya terletak pada penggunaan iterator untuk baris dalam proc.stdout, yang membaca keseluruhan output di muka. Untuk menangani perkara ini, readline() hendaklah digunakan sebaliknya:
# Filter output import subprocess proc = subprocess.Popen(['python', 'fake_utility.py'], stdout=subprocess.PIPE) while True: line = proc.stdout.readline() if not line: break # Filter output here print("test:", line.rstrip())
Dengan pengubahsuaian ini, output kini distrim baris demi baris seperti yang dikehendaki.
Pertimbangan Penimbalan:
Adalah penting untuk ambil perhatian bahawa subproses mungkin masih menampan output. Untuk mengendalikan perkara ini, kaedah siram atau teknik lain mungkin diperlukan untuk memastikan paparan output tepat pada masanya.
Atas ialah kandungan terperinci Bagaimana untuk Menstrim Baris Output Subproses mengikut Baris dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!