Я хотел бы записать двоичные данные в файл в Python, не отправляя сначала временные буферы. Как я могу использовать модуль struct
непосредственно в файле?Как я могу эффективно упаковать двоичные данные в файл в Python?
ответ
Вот как я смог упаковать двоичные данные непосредственно в файл под Python 3. Единственным недостатком является то, что вам нужно угадать максимальный размер файла перед записью данных. (Дополнительный вызов truncate
можно сделать в конце, если догадка слишком велика.)
Здесь две вещи. Файл сопоставляется с памятью, а struct
используется для упаковки данных в memoryview
этой карты памяти. Используя memoryview
, можно использовать интерфейс буфера Python для записи непосредственно в файл. struct
pack_into
Функция может записывать во все, что поддерживает буферный интерфейс. Этот метод также можно использовать, используя memoryview
в сокете, чтобы записывать двоичные данные непосредственно в сокет.
import struct
import mmap
with open('test.bin', 'wb') as f:
f.truncate(100)
with open('test.bin', 'r+b') as f:
m = mmap.mmap(f.fileno(), 0)
mv = memoryview(m)
for ind in range(25):
struct.pack_into('>l', mv, ind * 4, ind)
Кроме того, обратите внимание, что это, вероятно, лучше сделать меньше звонков в pack_into
, и назвав его в петлю здесь только для иллюстративных целей.
- 1. Как эффективно срезать двоичные данные в Ruby?
- 2. Читать двоичные данные в R эффективно
- 3. Как я могу эффективно записывать числовые данные в файл?
- 4. Двоичные данные в Python
- 5. Пытается упаковать двоичные биты, представленные байтами в байт в python
- 6. Самый быстрый способ упаковать и распаковать двоичные данные в список
- 7. Как эффективно хранить и обновлять двоичные данные в Mongodb?
- 8. Как я могу использовать библиотеку struct в python, чтобы упаковать double в два uint32's
- 9. Append двоичные данные в файл
- 10. Как написать исходные двоичные данные в Python?
- 11. Как записать двоичные данные в файл csv?
- 12. Как я могу упаковать файл ресурсов в runnable jar
- 13. Как я могу упаковать «внешний» текстовый файл в модуль elisp?
- 14. Как я могу упаковать/распаковать данные рабочей области Matlab в двоичный файл?
- 15. Как упаковать бит (эффективно) в CUDA?
- 16. Обработать двоичные данные как файл?
- 17. Как я могу эффективно индексировать файл?
- 18. Как бежать двоичные данные в Python
- 19. Python: Как я могу получить данные скриншотов в PIL.ImageGrab?
- 20. Как я могу обрабатывать двоичные данные в Frege?
- 21. Как я могу читать двоичные данные в C++?
- 22. как я могу установить двоичные данные в полукоксе []
- 23. python parse двоичные данные
- 24. Как Упаковать различные типы данных вместе в двоичные данные с Python
- 25. Могу ли я читать двоичные данные с istream в C++?
- 26. Как я могу эффективно фильтровать повторяющиеся строки в Python?
- 27. Как я могу преобразовать двоичные данные из файла в читаемую базу двоичных двоичных файлов в python?
- 28. Как эффективно удалить DBM-файл в Python?
- 29. Как я могу передать двоичные данные с помощью компьютерного дисплея в Python?
- 30. Как я могу упаковать изображения? -Pygame -PyInstaller