LINUX.ORG.RU

История изменений

Исправление E, (текущая версия) :

str.format() с некоторыми костылями.

import yaml
from collections import namedtuple

def to_struct(name, data):
    if isinstance(data, dict):
        T = namedtuple(name, data.keys())
        return T(*[to_struct(k.title(), v) for k, v in data.items()])
    elif isinstance(data, list):
        return [to_struct('YAMLList', x) for x in data]
    return data

...

with open(filename, "r") as f:
    data = yaml.load(f)
try:
    data = to_struct('CVTemplate', data)
    with open(dest_filename, "w") as f:
        f.write(template.format(**(data.__dict__)))
except KeyError as e:
    print("{0}: missing {1} group".format(filename, e))
    return 1
except AttributeError as e:
    print("{0}: {1}".format(filename, e))
    return 1

Исправление E, :

str.format() с некоторыми костылями.

def to_struct(name, data):
    if isinstance(data, dict):
        T = namedtuple(name, data.keys())
        return T(*[to_struct(k.title(), v) for k, v in data.items()])
    elif isinstance(data, list):
        return [to_struct('YAMLList', x) for x in data]
    return data

...
        with open(filename, "r") as f:
            data = yaml.load(f)
        try:
            data = to_struct('CVTemplate', data)
            with open(dest_filename, "w") as f:
                f.write(template.format(**(data.__dict__)))
        except KeyError as e:
            print("{0}: missing {1} group".format(filename, e))
            return 1
        except AttributeError as e:
            print("{0}: {1}".format(filename, e))
            return 1

Исходная версия E, :

str.format() с некоторыми костылями.