gpt4 book ai didi

python - sys.stderr 中何时不存在属性 `isatty()`?

转载 作者:行者123 更新时间:2023-12-01 01:51:01 26 4
gpt4 key购买 nike

有时此属性不存在。 (例如, thisthis )什么时候会发生这种情况?有办法解决吗?我可以以某种方式强制添加此属性以使事情运行吗?

最佳答案

我的猜测是,只有当 sys.stderr 被模拟或猴子修补时才会发生这种情况。

例如,the first GitHub issue您提到的错误消息如下:

AttributeError: 'UnicodeStdout' object has no attribute 'isatty'

这个类,UnicodeStdout,不在标准库中,我的研究指出了 hachoir 的旧版本。 lib(例如 this commit )。

second link还有另一个可疑的错误消息,其中类的名称本身就表明 sys.stdout 被搞乱了:

AttributeError: '_StdoutProxy' object has no attribute 'isatty'

这个类看起来像一个“代理”,它没有实现原始sys.stdout的所有方法。这不仅会影响 isatty(),还会影响其他属性,例如 fileno(例如,请参阅 this other issue。)

您可以自己对属性进行猴子修补:

sys.stderr = SomeProxyClass()

或者添加一个检查,例如:

if hasattr(sys.stderr, 'isatty') and sys.stderr.isatty()

但在大多数情况下没有必要。

关于python - sys.stderr 中何时不存在属性 `isatty()`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50727131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com