Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将命令转换为子进程_Python_Subprocess_Terraform - Fatal编程技术网

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'])

您是指子流程,还是将其作为后台任务或异步任务?