Я хочу изменить файлы быстрого времени, поэтому я работаю с quicktime.py , но он только анализирует информацию. Он не знает, как писать / изменять вещи.
В C struct записи на самом деле очень мощные - вы получаете 4 вещи за стоимость одного читаемого определения:
- Определить имена для каждой переменной.
- Определите сериализуемые типы и порядок для каждой переменной (давайте проигнорируем машинно-специфические махинации для этого обсуждения).
- Пакет (запись)
- Распаковать ('parse')
В python модуль struct
может выполнять числа 2-4, но вам нужно проделать дополнительную работу, чтобы заставить python определять имена как для упаковки, так и для распаковки на основе 1 определения (DRY).
OTOH ctypes
может выполнять 1-4 (3-4 не совсем в stdlib, но их легче исправить с помощью this ), а ctypes поддерживает вложение.
Я понимаю, что если потребуется более сложный анализ / сериализация, будет написан конкретный код. Но все же мне кажется, что я должен быть в состоянии объяснить python, как выглядит файл, и он может сделать все остальное (pack / unpack). Проблема в том, что ctypes объявляется как «библиотека сторонних функций», поэтому это «не предполагается» делать. Другая проблема заключается в том, что ctypes, вероятно, не будет хорошо работать с ОГРОМНЫМ файлом, где вы просто хотите найти где-нибудь и изменить несколько бит, хотя я не проверял это.
Вот вопрос: какой СУХОЙ способ чтения и изменения двоичных форматов в python?