Python程序退出时的错误:"关闭文件对象析构函数失败&#34 ;; " sys.excepthook缺失"

时间:2017-03-10 15:48:18

标签: python linux sys

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

为我做冲洗和关闭工作。

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

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