在python中每n秒自动点击“输入”

时间:2015-06-24 22:28:47

标签: python time

我使用python脚本调用外部程序一个循环,一般情况下一切正常。但是,程序偶尔会遇到执行某个过程的问题。如果我点击“输入”,程序将继续按需运行。

是否可以在后台运行一个进程,每隔n秒进入一次(无论程序是否卡住)?这样我将继续该程序,无论我是否在场,以指导它。这似乎违背了我对python如何工作的逻辑,但我想也许有一些解决方法。

注意:我将在bash(ubuntu 15.04)

中运行python脚本

2 个答案:

答案 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使LoopWinWaitActive变得非常简单。以下脚本将启动一个循环,等待标题为“Calculator”的窗口变为活动状态,然后立即发送 Alt + F4 并返回循环的开头,等待下一个计算器窗口出现。实际上,它会在您启动它时立即关闭计算器。

Loop {
    WinWaitActive, Calculator
    Send !{F4}
}

Calculator替换为错误对话框窗口标题的名称,将!{F4}替换为{Enter}

Loop {
    WinWaitActive, Flagrant Error
    Send {Enter}
}