将命令转换为子进程

我目前有以下内容:


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' 未被识别为内部或外部命令、可运行程序或批处理文件。”


我可以将上述转换为子流程吗?如果是这样,怎么办?


炎炎设计
浏览 82回答 1
1回答

慕运维8079593

subprocess执行外部命令。相比之下,您正在尝试执行类似(但不完全是)Python 代码。这根本行不通。您可以做的是创建一个包含您的 Terraform 代码的 Python 脚本并通过subprocess.check_output. 但是,这仅在 Python 脚本完成时才有效。你不能像你的情况那样执行一个片段。对于您可以执行的操作的最小示例,请获取原始脚本,将其另存为tf.py并在 Python 中像这样执行它:subprocess.check_output(['python', 'tf.py'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python