将命令转换为子进程
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'])
我目前有:
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'])