Python 程序退出时出错:“文件对象析构函数中的关闭失败”;“缺少 sys.excepthook”

use*_*408 3 python linux sys

在我的 python 代码的最后一行(print 语句)之后,出现以下错误:

close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
Run Code Online (Sandbox Code Playgroud)

有谁知道这可能来自哪里?

更新:我的 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())
Run Code Online (Sandbox Code Playgroud)

虽然我一直这样做,但从未遇到过此错误,但这似乎是我看到此问题的最可能原因。

use*_*408 6

将以下语句添加到我的 main 函数的最后为我解决了这个问题:

try:
    sys.stdout.close()
except:
    pass
try:
    sys.stderr.close()
except:
    pass
Run Code Online (Sandbox Code Playgroud)