我正在尝试在 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)
最佳答案
每个 subprocess.call(..., shell=True)
调用都会创建一个带有 shell 进程的新子进程,并且该 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 可执行文件,例如可执行文件=/bin/bash
。
关于python - 在 python 中发出连续命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57824179/