1. ホーム
  2. python

[解決済み] Pythonプログラム終了時のエラー:"ファイルオブジェクトのデストラクタでクローズに失敗"; "sys.excepthookが見つからない"

2022-02-27 04:20:37

質問

Pythonコードの最終行(print文)の後に、以下のエラーが表示されます。

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

どなたか、これがどこから来ているかご存じですか?

更新:私のpythonコードは非常に長いのですが、このエラーと関係がありそうな部分を掲載します。

ひとつは、処理の最初のほうで、stdoutとstderrをこのようなログファイルにリダイレクトしています。

so = se = open(logfile, 'w', 0)                       
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) 
os.dup2(so.fileno(), sys.stdout.fileno())           
os.dup2(se.fileno(), sys.stderr.fileno())

私はいつもこれをやっていて、このエラーに遭遇したことはありませんが、これが最も可能性の高い理由だと思われます。

解決方法は?

私のメイン関数の一番最後に以下の文を追加すると、この問題が解決します。

try:
    sys.stdout.close()
except:
    pass
try:
    sys.stderr.close()
except:
    pass