【问题标题】:Issue consecutive commands in python?在python中发出连续命令?
【发布时间】:2020-01-09 11:02:01
【问题描述】:

我正在尝试在 python 中调用一组命令(A、B、C)。这些命令设置了最终调用命令 X 的能力。但是,当命令 X 被调用时,它就像其他命令没有被调用一样。我相信这是因为它们是单独发布的,而不是在同一环境中同时发布的。有没有办法使用 Python 将它们全部发布到同一个打开的命令行。谢谢!

作为参考,真正的命令初始化 AutoSys 命令的执行。

我尝试过使用 os.sysetm(),与 subprocess.call 相同的问题

import subprocess

subprocess.call("Command A", shell=True)
subprocess.call("Command B", shell=True)
subprocess.call("Command C", shell=True)
subprocess.call("Command X", shell=True)

【问题讨论】:

    标签: python python-2.7 command-line subprocess command


    【解决方案1】:

    每个subprocess.call(..., shell=True) 调用都会创建一个带有shell 进程的new 子进程,并告知该shell 进程执行给定的命令。然后shell进程再次被拆除并退出,并带走任何环境变量。

    如果您必须在单个父 shell 进程中运行它们,那么您需要使用 shell 语法来执行此操作。例如。您可以使用; 分隔命令:

    subprocess.call("Command A; Command B; Command C; Command X", shell=True)
    

    这会按顺序运行命令。任何命令成功或失败都没有关系,因为在运行下一个命令时不会考虑它们的退出状态。

    您可以使用什么语法来控制命令的组合方式取决于您的平台。在 POSIX 系统(Mac OS X 或 Linux)上使用/bin/sh,这意味着您可以使用POSIX-compliant shell commands。在 Windows 上,这取决于 COMSPEC 使用什么 shell 环境。您可以通过设置 executable 来请求不同的 shell 可执行文件,例如executable=/bin/bash.

    【讨论】:

      【解决方案2】:
      import subprocess
      
      subprocess.call("Command A && Command B && Command C && Command X", shell=True)
      

      这将在 bash 中一个接一个地调用它们

      【讨论】:

        猜你喜欢
        • 2020-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-13
        相关资源
        最近更新 更多