Adressierung von sys.excepthook Fehler im Bash-Skript

8

Ich habe ein Bash-Skript geschrieben, das genau das tut, was ich will, aber den folgenden Fehler rausschmeiße:

close failed in file object destructor: sys.excepthook is missing lost sys.stderr

Ich bin völlig ratlos, wie ich das angehen soll. Hier ist das Skript:

%Vor%

Ich bin ziemlich neu bei Shell-Skripten und sehr neu bei Python. Ich wäre für jede Hilfe dankbar.

    
Jeff Severns Guntzel 31.10.2011, 14:32
quelle

3 Antworten

19

Ich sah diesen Fehler, wenn ich die Ausgabe eines Python 2.6.2-Skripts in den head -Befehl in bash auf Ubuntu 9.04 übertrug. Ich habe try Blöcke hinzugefügt, um stdout und stderr vor dem Beenden des Skripts zu schließen:

%Vor%

Ich sehe den Fehler nicht mehr.

    
George 31.12.2011, 21:33
quelle
3

Sie müssen zwei Schritte ausführen:

Schritt 1:

Suchen Sie in Ihrem csvcut -Skript nach allen Orten, an denen sys.stdout.write() aufgerufen wird. Stellen Sie sicher, dass sys.stdout.flush() nach jedem write() aufgerufen wird.

Schritt 2:

Wenn Schritt 1 abgeschlossen ist, sollten Sie IOError im Python-Skript erfassen können. Im Folgenden finden Sie ein Beispiel für die Behandlung von Rohrbrüchen:

%Vor%

Ich hoffe, es hilft!

    
berniey 11.08.2014 04:24
quelle
1

Ich nehme an, dass das Skript csvcut Python ansonsten funktionstüchtig ist, aber beim Versuch, Dateien zu schließen und zu beenden, einen Fehler verursacht.

Wenn, wie Sie sagen, das Skript anders arbeitet und angenommen wird, dass der Fehler 'csvcut' Ausgaben an stderr ausgibt, wäre das Umleiten zu / dev / null ein temporärer Fix.

%Vor%

Natürlich werden auch andere Fehlermeldungen in Ihrem Heredoc dorthin umgeleitet.

    
ZenGyro 31.10.2011 15:02
quelle

Tags und Links