如何解决将标准输入发送给REPL后,Python伪终端挂起
我正在尝试使用python pty
模块捕获从标准输入返回的REPL的输出。使用pty
文档中的this example,我在名为script.py
的可执行文件中包含以下代码:
#!/usr/bin/env python
# script.py
import pty
import sys
data = []
def read(fd):
b = os.read(fd,1024)
data.append(b.decode())
return b
pty.spawn(sys.argv[1:],read)
print(''.join(data))
不幸的是,当我在命令行中运行以下命令时,它会无限期挂起:
echo $'a = 1\na\n\cd' | ./script.py python
相比之下,当我出于相同目的使用UNIX script
实用程序时,它可以正常工作:
echo $'a = 1\na\n\cd' | script -q /dev/null python
结果:
Python 3.8.2 | packaged by conda-forge | (default,Apr 24 2020,07:56:27)
[Clang 9.0.1 ] on darwin
Type "help","copyright","credits" or "license" for more information.
>>> a = 1
>>> a
1
>>>
我在做什么错?免责声明:我不知道我在做什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。