Saya membuat skrip python yang berkomunikasi dengan server web menggunakan loop tak terbatas. Saya ingin mencatat setiap data komunikasi ke sebuah file dan juga memantaunya dari terminal pada waktu yang sama. jadi saya menggunakan perintah tee seperti ini.
python client.py | tee logfile
Namun, saya tidak mendapat apa-apa dari terminal atau file log. skrip python berfungsi dengan baik. apa yang terjadi disini? apakah saya melewatkan sesuatu?
beberapa nasihat akan sangat dihargai. Terima kasih sebelumnya.
sys.stdout.flush()
dari skrip Anda setiap kali Anda membuat log baris.Jawaban:
Dari
man python
:Jadi yang bisa Anda lakukan adalah:
Atau menggunakan
tee
:sumber
script
, yang juga menonaktifkan buffering dan sebagai tambahan membuat urutan kontrol (C-a
, tombol kursor, dll.) Berfungsi: stackoverflow.com/a/39269661/15690 .tee
terlihat seperti pipa (yang memang ada) dan bukan hybrid: itu menulis ke konsol. Catatan: perilaku juga dapat dikontrol di dalam program python.python -u client.py | tee >> logfile
tidak akan berhasil. Itu>>
akan memperkenalkan kasus lain penulisan buffer ke file. Itulah yangtee -a
memecahkannya.