我正在通过python执行外部程序,如果外部程序请求输入,那么我的python脚本必须提示我输入并继续执行这些输入...
有没有办法找出进程的标准输入是否处于活动状态以接受输入?
答案 0 :(得分:0)
看看pexpect模块:
http://www.noah.org/wiki/pexpect
它允许您运行进程并等待某些模式,然后发送输入和读取结果。您需要知道您的期望并且可能需要等待某些超时,直到您收到输入提示。
如果您的程序在提示时完全随机,那将会复杂得多。
答案 1 :(得分:0)
假设控制台空闲10秒钟,它可能会等待输入,
注意:并非总是这种情况,如果线程正在睡觉等...,
但为了简单起见,我假设了前者。
所以,
process=subprocess.Popen(['some_process_with_inputs'],shell=true,stdin=subprocess.PIPE)
start = time.time()
time_to_wait_for_idleness=10
while 1:
ret=process.poll()
if ret == None and (time.time() - start) > time_to_wait_for_idleness:
#Waiting for input possibly.. Do things here ie.. process.communicate()
time.sleep(1)
只是一个建议,可能会帮助某人。感谢您的回复。