Python 程序退出时的错误:"close failed in file object destructor" ; "sys.excepthook is missing"



在我的python代码中的最后一行(打印语句)之后,我会收到以下错误:

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

做冲洗和关闭为我工作。

sys.stdout.flush()
sys.stdout.close()
sys.stderr.flush()
sys.stderr.close()

最新更新