通常 isatty() 会告诉您流是否为 TTY,并且是确定 stdout 或 stderr 是否为控制台的常用方法。

问题在于,当您在 IDE 下运行脚本时,输出会被重定向,因此 istty 将返回 False 甚至不会被定义。

我想将此属性添加到 sys.stdout 甚至 sys.__stdout__ 以更改为 tty 进行检查的库的行为。

如果可能的话,我仍然想这样做而不必用代理替换对象本身。

# some logic...
setattr(sys.stdout, 'isatty', True)
>> AttributeError: 'file' object attribute 'isatty' is read-only

最佳答案

使用代理对象。我能想到的任何解决方案都没有比这更容易的了。

class PseudoTTY(object):
    def __init__(self, underlying):
        self.__underlying = underlying
    def __getattr__(self, name):
        return getattr(self.__underlying, name)
    def isatty(self):
        return True

sys.stdin = PseudoTTY(sys.stdin)

(另一个解决方案将涉及 ptys 。)

关于python - 如何说服 python 流对象从 isatty() 返回 true?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8389155/

10-12 18:42