Я не нахожу простого способа сделать это ..

У меня есть большой сложный файл yaml, я хочу его загрузить и записать только пару ключей в НОВЫЙ файл yaml.

Так например:

Существующий:

a:
  bsect: 
    thing: one
ab:
  bbsect:
    morething: more 
thisone: dbname
ac:
  ccc:
    cccthing: here
bd:
  bbb:
    bbbthing: again

Итак, я загружаю файл yaml, используя import yaml, и загружаю, используя: cfg = yaml.load (file) внутри с open.

Я хочу создать НОВЫЙ файл yaml только с помощью cfg [ab] и cfg [thisone]

Но когда я создаю файл yaml с помощью yaml.dump, я, очевидно, получаю содержимое cfg [ab] и cfg [thisone] без ключей, и это выглядит так.

bbsect:
   morething: more
dbname.

Это имеет смысл, но как лучше всего получить новый файл yaml, содержащий:

ab:
  bbsect:
    morething: more 
thisone: dbname

Я надеюсь в этом есть смысл.

Заранее спасибо.

1
JrRockeTer 24 Ноя 2021 в 11:43

1 ответ

Лучший ответ

Вы можете создать новый пустой конфиг и записать в него данные.

x = '''
a:
  bsect: 
    thing: one
ab:
  bbsect:
    morething: more 
thisone: dbname
ac:
  ccc:
    cccthing: here
bd:
  bbb:
    bbbthing: again
'''
import yaml
cfg = yaml.load(x)
new_cfg = {}
new_cfg['ab'] = cfg['ab']
new_cfg['thisone'] = cfg['thisone']
yaml.dump(new_cfg, default_flow_style=False)

Вывод:

ab:
  bbsect:
    morething: more
thisone: dbname
1
Equinox 24 Ноя 2021 в 12:01
Большое спасибо .. Я не могу поверить, что не подумал попробовать это ;-( Это работает ОТЛИЧНО !!!!! Я ценю, что вы ответили так быстро.
 – 
JrRockeTer
24 Ноя 2021 в 12:59