NameError: имя 'config' не определено - PullRequest
0 голосов
/ 07 октября 2018

Эта ошибка, кажется, была задана ранее, но я заметил, что ответы были на создание класса и создание объекта.Здесь я просто определяю функцию для чтения файла yaml и выплевывания значений.

    import yaml


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

    read_yaml(config.yaml)
    print(config)

Это возвращает ошибку: «NameError: name 'config' не определено».Я могу распечатать данные из файла yaml, но не конфигурацию, возвращенную функцией.

Ответы [ 3 ]

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

В 4-й строке вы определяете переменную config (присваивая ей) в рамках определения функции , которая началась в строке 1. Затем в строке 11 за пределами функции (уведомлениеотступ), вы пытаетесь получить доступ к переменной с именем config в глобальной области видимости (и ссылаетесь на ее атрибут yaml) - но ее нет.

Возможно, вы не имели в виду доступ к переменнойна этой последней строке.Вы хотели передать строку config.yaml в качестве имени файла?Тогда это должно быть в кавычках.

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

Возможно, вы хотели написать:

read_yaml("config.yaml")

Помните, что строка отделяется двумя кавычками.

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

Вы определяете переменную "config" внутри функции read_yaml, но затем вы пытаетесь использовать переменную вне функции (фактически вы пытаетесь передать ее в качестве аргумента той же самой функции, которая ее определяет).).

Чтобы решить эту проблему, измените свою последнюю строку на что-то вроде

read_yaml ("file.txt")

Где file.txt - имя файласодержащий ваш ямл.

...