Soru: BrokenPipeError
'u almadan print()
işlevi için flush=True
işlevini kullanmanın bir yolu var mı?Python'da BrokenPipeError
for i in range(4000):
print(i)
Bir Unix komut satırından böyle diyoruz:
python3 pipe.py | head -n3000
Ve döndürür:
0
1
2
Yani bu senaryoyu yapar
, bir senaryonun pipe.py
var :
head -n3000
için bu senaryoyu ve boru çalıştırıldığı zaman
Ancak: Sonra
for i in range(4000):
print(i, flush=True)
bu hatayı alıyorum: Ben de çözüm aşağıda çalıştık
print(i, flush=True)
BrokenPipeError: [Errno 32] Broken pipe
Exception BrokenPipeError: BrokenPipeError(32, 'Broken pipe') in <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'> ignored
, ama hala olsun BrokenPipeError
:
import sys
for i in range(4000):
try:
print(i, flush=True)
except BrokenPipeError:
sys.exit()
OS X 10.1'de yeniden oluşturamıyorum 0, şimdi CentOS 6.6'yı deniyorum. – jgritty
Sadece OS X 10.9.4'ü denedim ve onu yeniden üretemedim. Ubuntu 12.04.2 LTS'de hatayı aldım. Linux Mint Qiana'yı deneyeceğim. –
Tüm komut dosyalarınız benim için kırılsın, ilk önce ... – phantom