0

我正在通过 python 执行一个外部程序,如果外部程序要求输入,那么我的 python 脚本必须提示我输入并继续使用这些输入再次执行。

有什么方法可以查找进程的标准输入是否处于活动状态以接受输入?

4

2 回答 2

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)

只是一个建议,可能会对某人有所帮助。感谢您的回复。

于 2012-11-30T19:36:04.567 回答
0

看看 pexpect 模块:
http ://www.noah.org/wiki/pexpect

它允许您运行一个进程并等待某些模式,然后发送输入并读取结果。您需要知道您的期望,并且可能会等待某些超时,直到您收到输入提示。

如果您的程序在提示时是完全随机的,那将会复杂得多。

于 2012-11-30T17:38:57.770 回答