python 子进程:检查执行的脚本是否要求用户输入
python subprocess: check to see if the executed script is asking for user input
import subprocess
child = subprocess.Popen(['python', 'simple.py'], stdin=subprocess.PIPE)
child.communicate('Alice')
我知道您可以通过 communicate 与执行的脚本进行通信
您如何检查脚本 'simple.py' 是否要求用户输入?
simple.py 可能需要 5-10 个用户输入,因此简单地硬编码 communicate
是不够的。
[编辑]:想要解析标准输出,因为脚本是 运行 并返回给脚本
while True:
if child.get_stdout() == '?':
# send user input
一个简单的例子:
simple.py:
i = raw_input("what is your name\n")
print(i)
j = raw_input("What is your age\n")
print(j)
读写:
import subprocess
child = subprocess.Popen(['python2', 'simple.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
for line in iter(child.stdout.readline, ""):
print(line)
if "name" in line:
child.stdin.write("foo\n")
elif "age" in line:
child.stdin.write("100\n")
输出:
what is your name
foo
What is your age
100
import subprocess
child = subprocess.Popen(['python', 'simple.py'], stdin=subprocess.PIPE)
child.communicate('Alice')
我知道您可以通过 communicate 与执行的脚本进行通信 您如何检查脚本 'simple.py' 是否要求用户输入?
simple.py 可能需要 5-10 个用户输入,因此简单地硬编码 communicate
是不够的。
[编辑]:想要解析标准输出,因为脚本是 运行 并返回给脚本
while True:
if child.get_stdout() == '?':
# send user input
一个简单的例子:
simple.py:
i = raw_input("what is your name\n")
print(i)
j = raw_input("What is your age\n")
print(j)
读写:
import subprocess
child = subprocess.Popen(['python2', 'simple.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
for line in iter(child.stdout.readline, ""):
print(line)
if "name" in line:
child.stdin.write("foo\n")
elif "age" in line:
child.stdin.write("100\n")
输出:
what is your name
foo
What is your age
100