Как передать словарь в качестве аргумента командной строки в скрипт Python?

Не обязательно лучше, но так как хорошо иметь варианты, вот как это сделать, используя заявления Jinja :

- debug:
    msg: "{% for address in network.addresses.private_man %}\
        {% if address.type == 'fixed' %}\
          {{ address.addr }}\
        {% endif %}\
      {% endfor %}"

Или, если вы предпочитаете ставить все на одном line:

- debug:
    msg: "{% for address in network.addresses.private_man if address.type == 'fixed' %}{{ address.addr }}{% endfor %}"

Возврат:

ok: [localhost] => {
    "msg": "172.16.1.100"
}

30
задан PaolaJ. 1 August 2013 в 23:10
поделиться

1 ответ

Я начался с превосходным ответом @chander, но сталкивался с проблемами с выходом специального символа, и на уровне оболочки/команды и в рамках сценария Python. Сохранение JSON в файл и затем передача того имени файла в качестве параметра к сценарию были бы возможным решением, но в моей ситуации, которая была скорее сложной.

Так вместо этого я решил к URL, кодируют строку на уровне аргумента и декодируют его в Python сценарий. Это означает, что тому независимо от того, что называет сценарий Python, нужно к URL - кодируют параметр командной строки, который является эти JSON строка. Существуют многочисленный сетевые инструменты , которые позволяют Вам поиграть в песочнице с кодированием URL строку. В моем случае nodejs сценарий вызывает вызов сценария Python, и может легко URL кодировать JSON.

Внутренняя часть Python сценарий, это похоже на это (Вы не должны использовать argparse, но мне нравится он):

import json
import argparse
from urllib.parse import unquote

# Set up CLI Arguments
parser = argparse.ArgumentParser()

# Required Arguments
parser.add_argument("-c", "--config", required=True,
                    help="JSON configuration string for this operation")

# Grab the Arguments
args = parser.parse_args()

jsonString = unquote(args.config)

print(jsonString)

config = json.loads(jsonString)

print(config)
0
ответ дан 18 November 2019 в 02:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: