在 Python 代码中,我经常向 shell 发送命令并使用
import subprocess as S
x = subprocess.Popen('<command>', shell=True, stdout=S.PIPE)
x.stdout.read()
, 有<command>
问题的 shell 命令在哪里。但是,我发现当在子进程中发出此指令时stty size
,例如对于 command ,shell 会响应
stty: stdin isn't a terminal
我的指令返回一个空字符串。遵循http://docs.python.org/library/subprocess#popen-objects上的 Python 文档,我也尝试替换stdout.read()
为communicate()
:
x = subprocess.Popen('<command>', shell=True, stdin=S.PIP, stdout=S.PIPE)
x.stdout.read()
但是外壳仍然以相同的方式响应。
我的问题:如何让 Python 将标准输入视为终端?