与python中的bash脚本进行通信

时间:2012-08-27 10:52:56

标签: python windows bash mingw

我正在Windows下的python脚本中运行一些shell测试脚本。 shell脚本正在测试各种模块的功能。

我遇到的问题是某些脚本可能会挂起。为此,我为每个脚本添加了一个超时。此超时具有默认值。但是这个超时值可以通过bash脚本来改变 - 来自bash函数(SetMaxTime) - 我可以修改SetMaxTime。

当使用默认值时,我在python中等待那段时间,如果没有完成bash脚本,我会认为该测试由于超时而失败。

问题是当超时的默认值从bash更改时。有没有办法与python中的bash脚本(使用mingw运行)进行通信?

注意:脚本在Windows下运行。

2 个答案:

答案 0 :(得分:1)

当然,您可以在它们之间进行通信,只需从一个文件或一对文件进行读/写(一个用于Python写入,另一个用于读取bash脚本,另一个用于反之亦然)。

答案 1 :(得分:1)

在设置超时值时,让脚本在stdout上输出信息。例如。当超时更改时,脚本可以输出:

TIMEOUT_SECONDS=2

在调用脚本的Python代码中,在调用脚本的输出中查找此标记,并相应地调整测试超时。

为此,您可能希望使用subprocess.Popen方法调用脚本,为stdout指定PIPE选项。然后,您需要在测试运行时读取子进程stdout属性,从脚本中查找TIMEOUT_SECONDS=xxx输出并调整超时时间。