【问题标题】:python subprocess: raising an error when a process promptspython subprocess:进程提示时引发错误
【发布时间】:2011-07-05 19:13:59
【问题描述】:

我有一个 python 脚本,它在几个小时后在服务器上运行并调用许多 shell 子进程。任何被调用的程序都不应该提示,但有时它会发生并且脚本挂起,等待输入,直到用户(我)注意到并生气。 :)

已尝试:将 p.communicate() 与 stdin=PIPE 结合使用,如 python 子进程文档中所述。

运行:Ubuntu 10.10、Python 2.6

我不想响应提示,我希望脚本引发错误并继续。有什么想法吗?

谢谢, 亚历山大。

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    Pyexpect 是一个 Python 工具,用于处理可能生成输出(并且可能需要输入作为结果)的子进程。它将帮助您轻松处理各种情况,包括管理超时。

    见:http://www.noah.org/wiki/pexpect

    【讨论】:

    • 2021 年的注意事项:PyexpectPexpect 之间存在很大差异。前者是编写测试用例的辅助工具,后者是设计用于与子流程交互的模块。
    【解决方案2】:

    作为子进程中任何问题的包罗万象的解决方案,我建议对所有 shell 调用使用超时。 subprocess 模块调用中没有内置的超时支持,因此您需要使用信号。在此处查看详细信息:Using module 'subprocess' with timeout

    【讨论】:

      【解决方案3】:

      在等待任务完成时需要超时,然后让脚本终止或终止进程(除了引发错误)。

      【讨论】:

        猜你喜欢
        • 2020-10-12
        • 2013-01-24
        • 2015-09-01
        • 1970-01-01
        • 2018-01-27
        • 2012-11-22
        • 2019-06-13
        • 1970-01-01
        • 2015-10-07
        相关资源
        最近更新 更多