Разбор содержимого Yaml и составление списка из него - произошла ошибка (python 3.x) - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь сделать ввод для графиков. У меня есть файлы yaml с некоторым содержанием (например, год, разрешение ...), и я хочу создать список, который будет содержать «годы» из всех моих желаемых файлов yaml, а затем я буду использовать его позже в качестве входных данных для графиков.

Список должен выглядеть следующим образом : [2010, 2011, 2013, ...]

Но мой код дает мне этот список :

[2014]

[2014, 2015]

[2014, 2015, 2015]

Я полагаю, что проблема где-то в циклах «для»?

Вот код:

import glob
import yaml

pdb_codes = ['3J7Z', '3J9Y', '3J9Z', '3JA1', '3JBU', '3JBV'] #just example of few, there are many more
years = []


for codes in pdb_codes:    
    # get directories
    directories = glob.glob("../../../../DATA/{}/" .format(codes))

    # sort directories because the glob method yields them unordered
    directories_sorted = sorted(directories)

    # browse directories
    for directory in directories_sorted:
        pdb_code = directory.split("/")[-2]   
        yaml_name = directory + pdb_code + ".yaml" 

        with open(yaml_name) as stream:
            yaml_content = yaml.load(stream, Loader=yaml.FullLoader)
            year = yaml_content["Year"]
            years.append(year)

    print(years)

1 Ответ

0 голосов
/ 20 февраля 2020

Исходя из кода, я понимаю, что в каждом каталоге есть только ОДИН файл yaml, который вы читаете и добавляете год в список лет. Поскольку вы печатаете после каждого каталога, добавляется только один год, и список печатается. Попробуйте напечатать список после внешнего l oop.

Извините, если я не правильно понял вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...