python - 在 python 中发出连续命令?

标签 python python-2.7 command-line subprocess command

我正在尝试在 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/

相关文章:

用于基于属性随机访问的对象集合的 Python 数据结构

python - 如何获得 tf-idf 分类器的最佳特征?

python - 使selenium单击具有相同类别的连续元素n次

linux - 我想提取两个符号之间的任何文本

python - 跨平台,安全使用命令行字符串分隔符

python - 从一个 csv 文件中选择特定列并在 python 中写入另一个文件时出错

c++ - boost.python 中没有

python - 如何处理 scrapy 和 MySQL 中的撇号?蜘蛛完全忽略了数据中具有 "'“的内容

将plt文件转换为特定格式的gcode的Python代码

windows - SVN:如何知道文件在哪个版本中被删除?