ho una molto semplice Python 3 script:IOError: [Errno 32] tubo rotto: Python
f1 = open('a.txt', 'r')
print(f1.readlines())
f2 = open('b.txt', 'r')
print(f2.readlines())
f3 = open('c.txt', 'r')
print(f3.readlines())
f4 = open('d.txt', 'r')
print(f4.readlines())
f1.close()
f2.close()
f3.close()
f4.close()
ma si dice sempre:
IOError: [Errno 32] Broken pipe
ho visto su internet tutti i modi complicati per risolvere questo problema, ma ho copiato questo codice direttamente, quindi penso che ci sia qualcosa di sbagliato nel codice e non in SIGPIPE di Python.
sto reindirizzando l'output, quindi se lo script precedente è stato nominato "open.py", quindi il mio comando per eseguire sarebbe:
open.py | othercommand
Per quale numero di riga? – squiguy
@squiguy linea 2: 'print (f1.readlines())' –
Hai due operazioni di I/O che si verificano sulla riga 2: una lettura da 'a.txt' e una scrittura su' stdout'. Forse prova a dividerli su linee separate in modo da poter vedere quale operazione fa scattare l'eccezione. Se 'stdout' è una pipe e la fine di lettura è stata chiusa, allora ciò potrebbe tenere conto dell'errore' EPIPE'. –