在我的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()