Получать входные данные из CLI и обновлять файл yaml - PullRequest
0 голосов
/ 23 января 2019

Программа должна читать / записывать существующий файл YAML и предоставлять интерфейс командной строки для добавления новых контактов и отображения сведений о существующих контактах.

Приведенный ниже код выполняется, но не принимает никаких входных данных, а просто отображает данные

Namespace(List=None, age=23, email='viv.co.in@gmail.com', name='vivek', number=17675244953)

import argparse
import yaml
from pprint import pprint

class CLI(object):

    def book(self):
        self.create_parser()
        self.options = self.parse_args()
        pprint(self.options)

    def create_parser(self):
        self.parser = argparse.ArgumentParser(description='Phonebook:')
        g = self.parser.add_argument_group('Device Targets')
        g.add_argument('--List', type=argparse.FileType(mode='r'))
        g.add_argument('--name', default=[], action='append')
        g.add_argument('--age', default=[],  action='append', type=int,)
        g.add_argument('--number', default=[], action='append', type=int)
        g.add_argument('--email', default=[], action='append')

    def parse_args(self):
        args = self.parser.parse_args()
        config_file =  "{name: vivek, age: 23, email: viv.co.in@gmail.com, number: 17675244953}"
        data = yaml.load(config_file)
        for key, value in data.items():
                if isinstance(value, list):
                    for v in value:
                        getattr(args, key, []).append(v)
                else:
                    setattr(args, key, value)
        return args

cli = CLI()
cli.book()

Ожидаемый результат должен иметь формат ниже:

py-contacts --show TestName # shows details of saved contact of person with "TestName" ... 

py-contacts --add NewName --number 012345 --email test@mail.com # adds new contact to YAML .. py-contacts --list # shows a list of all saved contacts
...