在 python 中发出连续命令?

Issue consecutive commands in python?

我正在尝试调用 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)
import subprocess

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

这将在bash

中一个接一个地调用它们

每个 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.