将命令转换为子进程

Convert Command To Subprocess

我目前有:

tf = Terraform()
tf.init()
tf.plan(capture_output=False)
approve = {"auto-approve": True}
print(tf.apply(capture_output=False, auto_approve=True, skip_plan=True,**approve))

这很好用,但我需要把它放到一个子进程中。我试过以下方法:

tf = Terraform()
tf.init()
tf.plan(capture_output=False)
approve = {"auto-approve": True}
subprocess.check_output(['tf.apply','capture_output','0', 'auto_approve','1', 'skip_plan','1','**approve'])

但是,我收到错误消息:“'tf.apply' 未被识别为内部或外部命令、可运行程序或批处理文件。”

我可以将上面的转换成子流程吗?如果是,怎么做?

subprocess 执行外部命令。相比之下,您正在尝试执行类似(但不完全是)Python 代码。这根本行不通。

可以做的是创建一个包含您的 Terraform 代码的 Python 脚本并通过 [=12] 执行 that =].但是,这仅在 Python 脚本是 complete 时有效。你不能像你的情况那样只执行一个片段。

关于您 可以 做什么的最小示例,将您的原始脚本保存为 tf.py 并在 Python 中像这样执行它:

subprocess.check_output(['python', 'tf.py'])