Python 如何解析和附加到flexget yaml配置文件?

Python 如何解析和附加到flexget yaml配置文件?,python,linux,configuration,yaml,Python,Linux,Configuration,Yaml,我正在尝试从flexget配置文件中解析和添加/删除一个节目 我最终计划创建一个小网页,在显示名称旁边带有复选框,并添加/删除它们,但首先我需要在我有以下代码时正确完成yaml解析: #!/usr/bin/env python import yaml with open("shows.yml") as f: doc = yaml.safe_load(f) shows = doc['series']['shows'] sets = doc['series']['settings'

我正在尝试从flexget配置文件中解析和添加/删除一个节目

我最终计划创建一个小网页,在显示名称旁边带有复选框,并添加/删除它们,但首先我需要在我有以下代码时正确完成yaml解析:

#!/usr/bin/env python
import yaml
with open("shows.yml") as f:
        doc = yaml.safe_load(f)

shows = doc['series']['shows']
sets = doc['series']['settings']
shows.append('new show')
# this makes the list a little neater while printed to the file
showsa = []
for a in test:
  showsa.append(a)

testa = {'series': { 'shows': showsa, 'settings': sets }}

with open("showsnew.yml", 'w') as g:
        g.write( yaml.dump(testa, default_flow_style=False) )
这将打开旧配置,在列表中添加一个新的显示,然后将其打印到文件中,这几乎是完美的,但输出的配置有点混乱,如下所示:

**What I should get is:**                    **But instead I get:**
shows:                                         shows:
  settings:                                      settings:
    shows:                                         shows:
      setting1: value                                setting1: value
      setting2:                                      setting2:
        - value                                      - value
        - value                                      - value
  shows:                                         shows:
    - show1                                      - show1
    - show2                                      - show2
    - new show                                   - new show
虽然这并不是一个巨大的差异(仅仅是后面两个空格的“-”行),但我认为它可能会在稍后阶段弄乱配置

我知道手动添加和删除节目非常简单,但是当我使用数据库获取其他节目信息时,能够编写脚本将节目添加到flexget和数据库以及一些其他任务将非常方便

有人知道我做错了什么小事吗?或者这就是python中pyYaml的工作方式

目前,我正在考虑对文件进行解析,并在以“-”符号开头的每行中添加2个空格。或者在开始时以正确的间距将每个显示行逐行写入文件(或前面的字符串)


但我认为一定有更好的方法。

我继续执行并实现了一个简单的函数来解析文件,该函数用于向受影响的行添加额外的2个空格,因为它只需不到一秒钟的时间就完成了,而且不被人注意。

我现在正好遇到了同样的问题。
我想到了这个:

def writeYaml(data, filename):

  sections = data.keys()
  dump = yaml.dump(data, default_flow_style=False)

  # set 2 indent spaces in every line
  out = dump.replace('\n', '\n  ')
  # re-set indentation for sections only
  for i in sections:
      out = out.replace('\n  %s' % i, '\n%s' % i)

  with open(filename, 'w') as yaml_file:
      yaml_file.write(out)