Python 程序退出时出错:"close failed in file object destructor"; "sys.excepthook is missing"
Errors at Python program exit: "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 代码非常长,但我会 post 可能与此错误有关的部分:
首先,在进程开始时,我将 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()
在我的 python 代码的最后一行(打印语句)之后,出现以下错误:
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
有人知道这可能来自哪里吗?
更新:我的 python 代码非常长,但我会 post 可能与此错误有关的部分:
首先,在进程开始时,我将 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()