Python 将命令转换为子进程
我目前有以下情况:Python 将命令转换为子进程,python,subprocess,terraform,Python,Subprocess,Terraform,我目前有以下情况: 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)
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 = 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”未被识别为内部或外部命令、可操作程序或批处理文件。”
我可以将上述内容转换为子流程吗?如果是,如何执行?
子流程执行外部命令。相比之下,您正在尝试执行类似于(但不完全是)Python代码的代码。这根本行不通
您可以做的是创建一个包含Terraform代码的Python脚本,并通过子流程执行该脚本。但是,这只有在Python脚本完成时才起作用。你不能像你的情况那样执行一个片段
举一个简单的例子说明您可以做什么,将原始脚本保存为tf.py
,并在Python中像这样执行它:
subprocess.check_output(['python', 'tf.py'])
您是指子流程,还是将其作为后台任务或异步任务?