Атрибуты 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, ...]

Другие вопросы по тегам