Отображение содержимого файла yaml в список в python - PullRequest
0 голосов
/ 15 октября 2018

У меня есть файл yaml со следующей структурой:

это test.yaml

    server:
      - host: ubuntu
        ip: 10.20.30.40
        path: /var/log/syslog
      - host: ubuntu
        ip: 10.20.3.50
        path: /var/log/syslog

Когда я вызываю свой скрипт на python, я загружаю файл yaml и анализирую содержимое,Я не могу перебрать все содержимое:

Как мне создать список в следующем формате:

    import yaml



    def read_yaml(file):
        with open(file, "r") as stream:
            try:
                config = yaml.load(stream)
                print("inside the function")
                # print(config)
            except yaml.YAMLError as exc:
                print(exc)
                print("\n")
        return config

    d = read_yaml("config.yaml")


    print('{host}@{ip}:{path}'.format(*d['server']))

Я хочу вывод с host @ ip: path для разных серверов вфайл yaml.Но приведенная выше команда не работает и генерирует ошибку: аргумент TypeError: format () после ** должен быть отображением, а не списком или KeyError: Host

, пожалуйста, помогите.

1 Ответ

0 голосов
/ 15 октября 2018

Вы распаковываете список (d['server']) в качестве аргумента format.Но форматирование требует именованных аргументов ключевого слова (kwargs) в этом случае.

Поскольку вы должны надеяться печатать только 1 элемент при каждом таком вызове print, который вам нужен, попробуйте:

for item in d['server']:
    print('{host}@{ip}:{path}'.format(**item))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...