Атрибуты Asciidoctor-pdf не обнаруживаются с помощью python3 subprocess.run()
В нашем отделе мы переключили формат нашей документации на Asciidoc(tor). В целях автоматизации мы хотим использовать атрибуты / переменные, которые читаются из.yml-файла.
Проблема возникает при попытке обработать этот атрибут. Используя оболочку, работает отлично.
asciidoctor-pdf -a ui_host=10.10.10.10 -a ui_port=10 -a ext_host=10.11.11.11 -a ext_port=11 userman_asciidoc.adoc
Разбирая переменную s.yml в сценарии python3, отформатируйте их и прикрепите как распакованный список к subprocess.run()
Вызов вернет действительный Asciidoc-PDF. Однако атрибуты не включены.
Я считаю, что это проблема подпроцесса, и я делаю что-то не так. Итак, как subprocess.run() генерирует точно такой же вывод, как если бы он был записан в командной строке?
Переменная s.yml:
ui_host: 10.10.10.10
ui_port: 10
ext_host: 10.11.11.11
ext_port: 11
Asciidoc_build.py:
import yaml
import subprocess
import argparse
parser = argparse.ArgumentParser(description="This Script builds the Asciidoc usermanual for TASTE-OS as a pdf. It can take variables as input, which yould be stored in a .yml file")
parser.add_argument("adoc_file", help="Path to the usermanual as Asciidoc (.adoc) file")
parser.add_argument("yaml_file", help="The path to the yaml file, which contains all needed variables for the TASTE-OS usermanual")
args = parser.parse_args()
with open(args.yaml_file, "r") as f:
try:
yaml_content = yaml.load(f)
except yaml.YAMLError as exc:
print(exc)
yaml_variables = []
for key, value in yaml_content.items():
print(key, value)
yaml_variables.append("-a " + key + "=" + str(value))
subprocess.run(["asciidoctor-pdf", *yaml_variables, args.adoc_file])
1 ответ
-a
Параметр и фактическое значение должны быть разделены в списке, который передается подпроцессу.
for key, value in yaml_content.items():
print(key, value)
yaml_variables.append("-a")
yaml_variables.append(key + "=" + str(value))
До:[-a ui_host=10.10.10.10, -a ui_port=10, ...]
После:[-a, ui_host=10.10.10.10, -a, ui_port=10, ...]