【问题标题】:Communicating with bash scripts from python从 python 与 bash 脚本通信
【发布时间】:2012-08-27 10:52:55
【问题描述】:

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

我面临的问题是某些脚本可能会挂起。为此,我为每个脚本添加了超时。此超时具有默认值。但是这个超时值可以被 bash 脚本改变——从一个 bash 函数( SetMaxTime )——我可以修改 SetMaxTime。

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

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

注意:脚本在 Windows 下运行。

【问题讨论】:

  • 您的问题太笼统,无法回答。向我们展示您的代码,解释您认为其中可能存在的问题,我们将通过修复做出回应。
  • 我给出了一个通用的答案。

标签: python windows bash mingw


【解决方案1】:

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

【讨论】:

  • 我认为有更好的方法来做到这一点。但由于这不是一项时间紧迫的任务,我可以使用文件。
  • 我同意,这是一种可怕的方法,但作为一种快速而肮脏的解决方案,它会起作用。
【解决方案2】:

在设置超时值时让您的脚本在标准输出上输出信息。例如。当超时发生变化时,脚本会输出:

TIMEOUT_SECONDS=2

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

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

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多