我正在通过 python 执行一个外部程序,如果外部程序要求输入,那么我的 python 脚本必须提示我输入并继续使用这些输入再次执行。
有什么方法可以查找进程的标准输入是否处于活动状态以接受输入?
假设如果控制台空闲 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)
只是一个建议,可能会对某人有所帮助。感谢您的回复。
看看 pexpect 模块:
http ://www.noah.org/wiki/pexpect
它允许您运行一个进程并等待某些模式,然后发送输入并读取结果。您需要知道您的期望,并且可能会等待某些超时,直到您收到输入提示。
如果您的程序在提示时是完全随机的,那将会复杂得多。