我使用python脚本调用外部程序一个循环,一般情况下一切正常。但是,程序偶尔会遇到执行某个过程的问题。如果我点击“输入”,程序将继续按需运行。
是否可以在后台运行一个进程,每隔n
秒进入一次(无论程序是否卡住)?这样我将继续该程序,无论我是否在场,以指导它。这似乎违背了我对python如何工作的逻辑,但我想也许有一些解决方法。
注意:我将在bash(ubuntu 15.04)
中运行python脚本答案 0 :(得分:3)
像你一直在做的那样运行外部进程,但是对它的stdin保持一个管道,并定期给它写一个换行符。
from subprocess import Popen, PIPE
from time import sleep
n = 10 # seconds
p = Popen(["external_program", "arg1", "arg2"], stdin=PIPE)
while <condition>:
sleep(n)
p.stdin.write(b'\n')
p.stdin.flush()
答案 1 :(得分:1)
使用Python会很困难,但AutoHotkey使Loop
和WinWaitActive
变得非常简单。以下脚本将启动一个循环,等待标题为“Calculator”的窗口变为活动状态,然后立即发送 Alt + F4 并返回循环的开头,等待下一个计算器窗口出现。实际上,它会在您启动它时立即关闭计算器。
Loop {
WinWaitActive, Calculator
Send !{F4}
}
将Calculator
替换为错误对话框窗口标题的名称,将!{F4}
替换为{Enter}
:
Loop {
WinWaitActive, Flagrant Error
Send {Enter}
}