Я пытаюсь написать программу, которая создает адресную книгу с именами контактов, электронными адресами, телефонными номерами и т. Д. Я сохраняю каждый контакт в виде словаря, а затем помещаю каждого человека (словарь) в глобальный список.Затем я преобразую список в строку, используя repr()
, и записываю ее в файл.Когда я пытаюсь перезагрузить список и написать, что он содержит, я получаю список пустых словарей.Пожалуйста, помогите мне разобраться в чем дело.
Вот мой код:
list = []
listfile = 'phonebook.txt'
class bookEntry(dict):
total = 0
def __init__(self):
bookEntry.total += 1
self.d = {}
def __del__(self):
bookEntry.total -= 1
class Person(bookEntry):
def __init__(self, n):
bookEntry.__init__(self)
self.n = n
print '%s has been created' % (self.n)
def addnewperson(self, n, e = '', ph = '', note = ''):
f = file(listfile, 'w')
self.d['name'] = n
self.d['email'] = e
self.d['phone'] = ph
self.d['note'] = note
list.append(self)
listStr = repr(list)
f.write(listStr)
f.close()
Я запускаю программу с функцией startup()
:
def startup():
aor = raw_input('Hello! Would you like to add an entry or retrieve one?')
if aor == 'add':
info = raw_input('Would you like to add a person or a company?')
if info == 'person':
n = raw_input('Please enter this persons name:')
e = raw_input('Please enter this persons email address:')
ph = raw_input('Please enter this persons phone number:')
note = raw_input('Please add any notes if applicable:')
X = Person(n)
X.addnewperson(n, e, ph, note)
startup()
Iдобавьте эти ответы к подсказкам:
'''
Hello! Would you like to add an entry or retrieve one?add
Would you like to add a person or a company?person
Please enter this persons name:Pig
Please enter this persons email address:pig@brickhouse.com
Please enter this persons phone number:333-333-3333
Please add any notes if applicable:one of three
Pig has been created
'''
Когда я открываю phonebook.txt
, вот что я вижу:
[{}]
Почему возвращаются пустые словари?