Выбор имени выходного файла yaml - PullRequest
0 голосов
/ 28 января 2020

У меня есть скрипт, который сохраняет данные в формате yaml, и я получаю около 5000 файлов.

Данные поступают из CSV-файла, и одна из этих дат - это имя, которое я хотел бы Назовите мои выходные файлы yaml из имен в файле csv (столбец 2).

Вот что у меня есть

import csv
import ruamel.yaml
from csv import reader
from ruamel.yaml import YAML

yaml = ruamel.yaml.YAML()
yaml.preserve_quotes = True

with open('config.yaml') as yml:
    doc = yaml.load(yml)

with open('params.csv') as f:
    for i, data in enumerate(reader(f)):
        doc['components']['star']['init'][0]['values']['logg'] = data[6]
        with open(f'config-{i}.yaml', 'w') as out:
            yaml.dump(doc, out)

Затем выходные файлы называются config-0.yaml, config-1.yaml......., но я бы хотел их имя взято из моего CSV-файла, чья конструкция выглядит следующим образом:

2, ngc6397id000000002jd2456871p6250f000.fits, 6304.19055182, 97.72410249, ....
7, ngc6397id000000007jd2456871p6250f000.fits, 6177.99367633, 27.03483789, ....

Я хотел бы получить в качестве вывода:

ngc6397id000000002jd2456871p6250f000.yaml, ngc6397id000000007jd2456871p6250f000.yaml....

Но я не могу найти способ в качестве названия мои yaml файлы, вы можете помочь?

1 Ответ

0 голосов
/ 28 января 2020

Вы можете использовать split(), чтобы получить первую часть значения второй строки:

with open('params.csv') as f:
    for i, data in enumerate(reader(f)):
        doc['components']['star']['init'][0]['values']['logg'] = data[6]
        filename = data[1].split(".")[0]  
        with open(f'{filename}.yaml', 'w') as out:
            yaml.dump(doc, out)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...