Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973

Получить все объекты из файла

08.07.2015, 01:51. Показов 2427. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Вопрос такой: есть файл, в который с помощью pickle.dump() было сохранено какое-то количество объектов. Допустим
Python
1
2
3
4
5
6
>>> import pickle
>>> f = open('some_file', 'wb')
>>> for s in ('any', 'many', 'money', 'more'):
...   pickle.dump(s, f)
... 
>>> f.close()
Как их теперь оттуда вытащить все, сколько бы их там ни было? Единственное, что у меня отработало:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> f = open('some_file', 'rb')
>>> while True:
...   try:
...     s = pickle.load(f)
...   except EOFError:
...     break
...   else:
...     print(s)
... 
any
many
money
more
>>>
но как-то не комильфо по-моему...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.07.2015, 01:51
Ответы с готовыми решениями:

Получить не все сериализованные объекты, а, например, первых 3
Познакомился с сериализацией объектов в C#. Узнал что несколько объектов можно сериализовать, добавив их в список и сериализовав сам...

Как получить все объекты другого объекта?
У меня есть объект в котором есть другие, они все имеют свою структуру, но общую переменную Num, вот мне им нужно и присвоить каждому Num. ...

Получить из html кода все объекты с определенным class
Всем привет! Есть html код, в котором перечисляются строки под тегом <div> Пример: <div class="cnt-column"> ...

7
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
08.07.2015, 02:13
Ну напишите в самое начало файла счетчик, если так будет лучше
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
08.07.2015, 02:28  [ТС]
Цитата Сообщение от Black Fregat Посмотреть сообщение
Ну напишите в самое начало файла счетчик, если так будет лучше
Ещё бы знать, сколько там всего будет. Как вариант, можно было бы всё в один список запихнуть, да так и сохранить.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
>>> f = open('some_file', 'wb')
>>> l = ['any', 'many', 'money', 'more']
>>> pickle.dump(l, f)
>>> f.close()
>>> f = open('some_file', 'rb')
>>> for s in pickle.load(f):
...   print(s)
... 
any
many
money
more
>>>
Проблема в том, что программа, создающая файл, по мере своей работы отправляет в него заранее непредсказуемое (но не астрономических масштабов) количество объектов.

Собственно так и сделал (отправил список в файл), но всё-таки интересно, можно как-то итератор на содержимое такого файла получить?
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
08.07.2015, 03:05
Есть такой костыль, но не уверен, что так лучше:
Python
1
2
3
4
while f.read(1):
    f.seek(-1,1)
    s = pickle.load(f)
    print(s)
Можно еще в конце писать файл какой-то специфичный объект-терминатор и проверять
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
08.07.2015, 06:40
Может как вариант лучше использовать http://python-3.ru/page/module-shelve-python
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
08.07.2015, 09:55  [ТС]
alex925, у меня там свалка однотипных объектов, пускай списком сохраняются, так проще.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
08.07.2015, 10:35
Цитата Сообщение от easybudda Посмотреть сообщение
пускай списком сохраняются
Ну против такого враинта ничего против не имею, просто это на тот случай если пытаться сохранять их по отдельности с помощью pickle.
Если честно вообще раньше не думал, что pickle может втиснуть в файл несколько объектов. Всегда почему-то надо было хранить ток 1 объект.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.07.2015, 01:26  [ТС]
Цитата Сообщение от easybudda Посмотреть сообщение
можно как-то итератор на содержимое такого файла получить?
Поделка из кружка "Очумелые ручки", но работает
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> def get_obj(fn):
...   while True:
...     try:
...       yield pickle.load(fn)
...     except EOFError:
...       return
... 
>>> f = open('multy_objs', 'rb')
>>> for o in get_obj(f):
...   print(o)
... 
any
many
money
more
>>>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.07.2015, 01:26
Помогаю со студенческими работами здесь

С файла считываются не все объекты
Записывается файл так: void CreateNewPerson() { HANDLE hFile = CreateFile( L"base.dat", // Filename ...

Как получить все объекты, поля которых используют определенный аттрибут?
То есть у меня есть свой аттрибут TestAttribute, он используется только в наследниках класса Test (который в свою очередь унаследован от...

Можно ли получить все объекты указанного класса, обратившись к их общему родителю?
Добрый день! Пишу что-то вроде фраймворка для разработки скриптов в одной пригодной для этого игре. Сделал шаблон, обозначил классы. Но...

Найти все одинаковые объекты с одинаковым свойством и получить имя объекта
Здравствуйте! В терминологии разбираюсь не особо, поэтому вопрос опишу, как понимаю сам. Имеется программа, которая генерирует пиксели...

Не могу нормально считать все объекты класса из файла
#include <iostream> #include<fstream> #include<string> using namespace std; class Bank_accounts // имя класса { char...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru