gpt4 book ai didi

python - Pydev:将标准输出发送到真实的(tty)终端

转载 作者:行者123 更新时间:2023-11-28 18:52:19 25 4
gpt4 key购买 nike

跟进上一个问题 ( subprocess: PyDev console vs. cmd.exe ),有没有办法改变 PyDev 发送 stdout 的位置——即到 tty 终端?

我遇到过几个没有 tty 终端的例子。对于子进程模块,我可以使用 CREATE_NEW_CONSOLE 标志,但在其他情况下,例如在这个问题 ( Print \r correctly in console ) 中,PyDev 控制台似乎不支持使用转义字符。

如有任何想法,我们将不胜感激。

最佳答案

我通常通过标准库中的 logging 模块来处理此类问题,这非常好,但我假设您有充分的理由想要这样做。

如果 PyDev 控制台支持完整的终端仿真,我会感到惊讶。至少在 Windows 上的 Helios 下,Unicode 显示没有问题,但终端转义是另一回事。

如果您明确知道要使用哪个终端,则可以在其中运行 sleep 3600,然后在您的测试驱动程序中执行此操作:

import sys
def redirect_terminal(ttypath):
term = open(ttypath, 'w+')
sys.stdout = term
sys.stderr = term

在交互式解释器中尝试这个,这可能与在 PyDev 中运行它有点不同,我在初始终端中得到这个(注意本地回显和提示仍然在这里返回):

>>> redirect_terminal('/dev/pts/0')
>>> dir()
>>> raise TypeError
>>>

/dev/pts/0 终端中:

['__builtins__', '__doc__', '__name__', '__package__', 'redirect_terminal', 'sys']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError

虽然我没有在这里尝试任何终端转义,但它们只是像其他任何字符一样打印的字节序列,因此它们应该打印在远程终端上。

我无法在交互式解释器中收集来自不同终端的输入。当我尝试时,仍然从初始终端读取输入。

关于python - Pydev:将标准输出发送到真实的(tty)终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520200/

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