Меня интересует сжатие данных с помощью модуля Python gzip
. Бывает, что я хочу, чтобы сжатый вывод был детерминированным, потому что это часто очень удобное свойство для вещей в целом — если какой-то процесс, не поддерживающий gzip, будет искать изменения в выводе, скажем, или если вывод будет криптографически подписан.
К сожалению, результат каждый раз разный. Насколько я могу судить, единственной причиной этого является поле метки времени в заголовке gzip, которое модуль Python всегда заполняет текущим временем. Я не думаю, что вам действительно разрешено иметь поток gzip без временной метки, что очень плохо.
В любом случае у вызывающей стороны модуля Python gzip
, по-видимому, нет способа указать правильное время модификации базовых данных. (Похоже, что реальная программа gzip
использует временную метку входного файла, когда это возможно.) Я полагаю, это потому, что в основном единственное, что когда-либо заботится о временной метке, — это команда gunzip
при записи в файл — и, теперь, я, потому что я хочу детерминированный вывод. Это так много, чтобы спросить?
Кто-нибудь еще сталкивался с этой проблемой?
Каков наименее ужасный способ gzip
некоторых данных с произвольной отметкой времени из Python?