使用Popen启动另一个脚本并发送输入

时间:2016-12-21 19:53:00

标签: python popen

我有两个脚本,只需要输入然后打印输入。另一个启动脚本。它只有一半的工作,我希望有人可以解决这个问题。

test.py

import subprocess

process = subprocess.Popen('python test2.py', shell=False,
                           stdin=subprocess.PIPE, stdout=subprocess.PIPE,
                           stderr=None)
process.stdin.write("test\r\n".encode('utf-8'))
process.stdin.flush()

result = process.stdout.readline()[:-2].decode('utf-8')
print(result)
while result != "":
    result = process.stdout.readline()[:-2].decode('utf-8')
    print(result)

test2.py

s=input("input here:")
print(s)

预期产出:

input here:test
test

实际输出:

input here:test

1 个答案:

答案 0 :(得分:0)

请注意,输入未回显。如果您正坐在终端上并且要运行' python test2.py',终端会在您输入时回显您的输入。这将显示" test"两次。你的test.py程序发送单词" test"通过管道;它不会打印到stdout。 test2.py程序打印输入一次。因此输出"输入:test"是对的。