Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 24.12.2019
Сообщений: 1

Сохранение dict в файле

05.05.2020, 21:48. Показов 2270. Ответов 3

Студворк — интернет-сервис помощи студентам
Столкнулся со следующей проблемой. Мне нужно, чтобы python 3.7.6 открывал файл, в котором находится словарь(dict) уже содержащий ключи и значения, для записи новых ключей и значений с сохранением новых и предыдущих файлов. Данные в файл вводятся, но после закрытия программы они пропадают.



У меня два метода превращения строки в словарь:



1)

logpass={}
with open("info.txt",encoding="utf-8") as file:
for line in file:
key,*value=line.split()
logpass[key]=value
#Данные в файле(info.txt) A123456789Z A123456789Z



2)

info={"A123456789Z":"A123456789Z"}
with open("info.pickle", "wb") as f:
pickle.dump(info, f)
with open("info.pickle", "rb") as f:
logpass=pickle.load(f)
#Данные в файле(info.pickle) расшифровываются как {"A123456789Z":"A123456789Z"}



Помогите, пожалуйста, сделать так, чтобы предыдущие данные и новые не только читались, но и сохранялись. Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2020, 21:48
Ответы с готовыми решениями:

Порядок вывода значений dict при использовании метода dict.values()
Интересует, на всех ли машинах будет порядок один и тот же? И, если кто знает, было бы интересно побольше узнать про внутреннее...

Составьте программу для решения задач, применяя сохранение данных в типизированном файле,а вывод данных в текстовом файле,используя стандартные функии
Здравствуйте народ! Помогите кто чем может. Нужно решить задачи на двух языках С++ и Pascal, и еще к задаче нужно сделать блок схему. ...

Сохранение массива в файле
:wall: Добавлено через 37 минут тип double

3
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
05.05.2020, 22:08
а почему не json?
https://python-scripts.com/json
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.05.2020, 22:18
Цитата Сообщение от sasha sychev Посмотреть сообщение
делать так, чтобы предыдущие данные и новые не только читались, но и сохранялись.
Pickle каждый раз будет записывать новый объект.
Если вы хотите сохранять предыдущие данные, вы должны сначала прочитать словарь, изменить его и только потом записать. Заново.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
06.05.2020, 00:11
sasha sychev, Все что Вам нужно делает модуль shelve, который использует pickle, но при этом обеспечивает удобный сервис. Правда этот сервис обеспечивается тем, что сохранение идет в три файла, каждый из которых выполняет свою роль.
Вот что говорит Лутц (Лутц М. Программирование на Python. Том 1 [4-е издание, 2011] стр.66-68):
"Возможность сохранения объектов во всех версиях Python обеспечивают три модуля в стандартной библиотеке:

pickle
Преобразует произвольные объекты на языке Python в строку байтов и обратно.

dbm
Реализует сохранение строк в файлах, обеспечивающих возможность обращения по ключу.

shelve
Использует первые два модуля, позволяя сохранять объекты в файлах хранилищах, обеспечивающих возможность обращения по ключу.

Хранилища, создаваемые модулем shelve, идентичны словарям с дополнительными методами open и close. В программном коде объекты хранилищ действительно выглядят, как словари, содержимое которых сохраняется после завершения программы.
(мое прим. С ними можно работать как с обычными словарями, но добавляются методы open и close)."

Пример:
Python
1
2
3
4
5
import shelve 
db = shelve.open('persondb')   # Имя файла хранилища                                           
for object in (bob, sue, tom):    # В качестве ключа использовать атрибут name
    db[object.name] = object    # Сохранить объект в хранилище 
db.close()                             # Закрыть после внесения изменений
Кроме открытия и закрытия хранилища, в остальном осуществляется работа как с обычным словарем питона, работают абсолютно все методы, которые есть у словарей. Но при этом все автоматически сохраняется во внешнем хранилище состоящим из трех файлов.

Добавлено через 2 минуты
Это вырвано из контекста кода, поэтому только для иллюстрации.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2020, 00:11
Помогаю со студенческими работами здесь

Сохранение и перезапись в файле
Добрый вечер! Я заполняю таблицу и при выходе из формы задаю сообщение о том, желаю ли я сохранить данные таблицы в файл. Если да, то...

Сохранение данных в файле
даны результаты аттестации в группе по нескольким предметам .Разработать проект позволяющий: 1)выполнять ввод,удаление,добавление данных...

Сохранение в res файле
Я точно не знаю есть ли такие файлы. Если есть, как сохранить например такой текст внутри них "Это текст" в файле с расширением...

Сохранение данных в файле
Помогите написать программу чтобы введенная информация сохранялась в файле(.txt) Вот основа: #include <iostream> #include...

Сохранение массива в Файле
Создал рабочее приложение в GUI для сортировки массива. Алгоритм такой: нажимаем кнопку Загрузить массив и указываем файл из которого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru