繁体   English   中英

python subprocess:检查执行的脚本是否要求用户输入

[英]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')

我知道你可以通过沟通与执行的脚本进行通信如何检查脚本'simple.py'是否要求用户输入?

simple.py可以要求5-10个用户输入,所以简单的硬编码communicate就不够了。

[编辑]:想要在脚本运行时解析stdout并与脚本进行通信

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM