Программа должна читать / записывать существующий файл 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