Удалите файл из zipfile с Модулем ZipFile

Вы правы, np.vstack копирует полные массивы.

Вы можете сделать небольшой опыт работы с питоном, чтобы подтвердить это:

a = np.array([[1,2,3]])
b = np.array([[4,5,6]])
res = np.vstack((a,b))
res
array([[1, 2, 3],
       [4, 5, 6]])

Затем, если вы измените массив a и напечатаете res, вы увидите, что res не изменено

[ 111]
35
задан Anthon 1 January 2017 в 10:34
поделиться

1 ответ

Следующий отрывок работал на меня (удаляет все *.exe файлы из архива Zip):

zin = zipfile.ZipFile ('archive.zip', 'r')
zout = zipfile.ZipFile ('archve_new.zip', 'w')
for item in zin.infolist():
    buffer = zin.read(item.filename)
    if (item.filename[-4:] != '.exe'):
        zout.writestr(item, buffer)
zout.close()
zin.close()

при чтении всего в память можно избавить от необходимости второй файл. Однако этот отрывок повторно сжимает все.

После того, как более близкий контроль эти ZipInfo.header_offset является смещением из файла, запускаются. Имя вводит в заблуждение, но основной заголовок Zip на самом деле хранится в конце файла. Мой Hex-редактор подтверждает это.

, Таким образом, проблема, с которой Вы столкнетесь, следующая: необходимо удалить запись каталога в основном заголовке также, или это укажет на файл, который больше не существует. Отъезд основного неповрежденного заголовка мог бы работать, если Вы сохраняете локальный заголовок файла, Вы удаляете также, но я не уверен в этом. Как Вы делали это со старым модулем?

, не изменяя основной заголовок я получаю ошибку "недостающие X байты в zipfile", когда я открываю его. Это могло бы помочь Вам узнать, как изменить основной заголовок.

43
ответ дан mdm 27 November 2019 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: