通常 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/