Привет, я новичок в python an di, недавно создал телефонную книгу, используя функцию словаря, а затем переключился на exe с помощью py2exe. Я столкнулся с проблемой, теперь я ввожу имена в телефонную книгу, а затем, когда я выхожу из программы и возвращаю назад, все числа ушли. SO есть ли способ сохранить имена и числа, введенные в программу? Пожалуйста, дайте мне код, как я делаю это для своего класса, и они будут сумасшедшими, если числа исчезнут каждый раз, когда они выйдут из телефонной книги! ПОЖАЛУЙСТА ПОМОГИ!Телефонная книга python
ответ
Если вы еще не хотите изучать реляционные базы данных, NoSQL или облачные решения, вы можете начать с использования shelve module.
мммм. Можете ли вы, ребята, указать еще немного по-прежнему сомневающимся, если возможно, предоставить более простой учебник или предоставить код? –
Ну, основная проблема заключается в том, что вы храните новые значения в своей базе данных, которая в этом случае представлена dict, но вы не сохраняете ее состояние между выполнением сценариев. Время существования объекта в вашем скрипте - пока скрипт запущен интерпретатором, и у объекта есть некоторые ссылки на него. Когда вы перезагружаете свою программу, вы снова запускаете свой скрипт и сохраняете в dict только те элементы, которые были указаны во время сценария.
Наиболее простым решением, на мой взгляд, является использование python pickle module. Вы собираетесь сохранить этот файл в файле, а затем загрузите его в попрошайничестве своего скрипта и сохраните его в конце.
вам нужно обновить код сценария с чем-то вроде этого:
default = {'Sarah': 7736815441,
'John': 7736815442}
def start():
#some code here, before you're trying to access phone numbers in your dict
try:
phonebook = pickle.load(open("data.pb", "r"))
except IOError:
phonebook = default
#your script here
def exit():
#some code here, last chance to modify your dict,
#so changes will appear in next program executions
pickle.dump(phonebook, open("data.pb", "w"))
надеюсь, что вы знакомы с функциями питона, если нет - вы можете прочитать о то here
Не только дикты, но и экземпляры пользовательских классов (с некоторыми ограничениями, которые, вероятно, не будут проблемой в вашем случае), могут быть маринованными. –
Здравствуйте, вы можете мне помочь, я готов дать вам код, можете ли вы изменить его для меня и отправить мне? Мне это действительно нужно! Спасибо –
@ RomanSusi да, я знаю это, но в этом случае, как я понял, только dict - это изменяющийся объект. –
Google 'питон persistence' .. . –
Задайте себе: как обычные приложения сохраняют введенные данные? – MatthewD
Как говорит Феликс, вам нужно «Google it up» и запрограммировать его самостоятельно, просто невозможно создать общий «сохранить и загрузить что-либо» без каких-либо подробностей о том, как вам нужно работать. –