Выполнить команду оболочки Windows и обработать выходные переменные - PullRequest
0 голосов
/ 28 марта 2019

В Python 3.7, работающем в Windows, какой специальный синтаксис требуется для:

1. Navigate to a directory containing a terraform program  
2. Execute "terraform apply -auto-approve" in that target directory  
3. Extract the resulting output variables into a form usable in python  

Выходные переменные могут иметь вид:

security_group_id_nodes = sg-xxxxxxxxxx  
vpc_id_myvpc = vpc-xxxxxxxxxxxxx   

Хотите использовать стиль Windows cmdЗдесь команды, а не powershell.

Моя первая неудачная попытка новичка:

import os

os.chdir('C:\\path\\to\\terraform\\code')

from subprocess import check_output
check_output("terraform apply -auto-approve", shell=True).decode()

1 Ответ

1 голос
/ 28 марта 2019

Не уверен насчет вашего вывода, но подпроцесс определенно может сработать.

Попробуйте что-то вроде:

command = 'terraform apply -auto-approve'
TARGET_DIR = 'E:\Target\Directory'
subprocess_handle = subprocess.Popen(shlex.split(command), cwd=TARGET_DIR, shell=False, stdout=subprocess.PIPE)
subprocess_handle.wait()

result = subprocess_handle.communicate()[0]
print(result)

Сработало для меня один раз, просто поиграйтесь с параметрами.

UPD: здесь я предполагаю, что "terraform" является исполняемым файлом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...