运行时对Python程序的外部输入

时间:2018-07-30 09:04:59

标签: python batch-file input

我正在创建一个自动化测试,该自动化使用没有任何接口的应用程序。但是,该应用程序在更改模式时会调用批处理脚本,因此我能够捕获模式转换。

我想要做的是获取批处理脚本,以便在运行时为我的python脚本(我在python中运行状态机)提供输入。这样我就可以使用python而不是批处理文件来监视应用程序的状态。

我正在使用与Karn Saheb相似的状态机: https://dev.to/karn/building-a-simple-state-machine-in-python

但是,与其像这样静态地更改状态,

device.on_event('event')

我希望python脚本执行类似的操作:

while(True):
    device.on_event(input()) # where the input is passed from the batch script:

REM state.bat
set CurrentState=%1
"magic code to pass CurrentState to python input()" %CurrentState%

我看到一个解决方案是每次使用“事件”调用时从批处理文件中启动python脚本,然后在python脚本终止时将当前事件保存到另一个文件中……但是我想要避免这种处理,而是在运行时进行评估。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

在不进行临时文件丑陋轮询的情况下,一种合理的移植方法是使用套接字:使用主进程listen并让批处理文件启动一个连接到服务器并写入的小程序一条消息。

这里有一些安全方面的考虑:您可以从仅侦听回送接口开始,如果不信任本地计算机,则可以进行进一步的身份验证。

如果您有多个处理流程,或者需要在处理即将死亡的孩子之前发布下一份报告,则必须使用线程或类似select的方法来统一来自其他消息的消息输入通道( eg ,等待孩子退出 vs。,等待下一个批处理文件中的新闻)。