Is it possible to use PyYAML to read a text file written with a “YAML front matter” block inside?

前端 未结 2 1665
-上瘾入骨i
-上瘾入骨i 2020-12-12 02:56

I\'m sorry, I know very little of both YAML and PyYAML but I felt in love with the idea of supporting a configuration file written in the same style used by \"Jekyll\" (http

2条回答
  •  北海茫月
    2020-12-12 03:20

    The Python yaml library does not support reading yaml that is embedded in a document. Here is a utility function that extracts the yaml text, so you can parse it before reading the remainder of the file:

    #!/usr/bin/python2.7
    
    import yaml
    import sys
    
    def get_yaml(f):
      pointer = f.tell()
      if f.readline() != '---\n':
        f.seek(pointer)
        return ''
      readline = iter(f.readline, '')
      readline = iter(readline.next, '---\n')
      return ''.join(readline)
    
    
    for filename in sys.argv[1:]:
      with open(filename) as f:
        config = yaml.load(get_yaml(f))
        text = f.read()
        print "TEXT from", filename
        print text
        print "CONFIG from", filename
        print config
    

提交回复
热议问题