Вы правы, 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
не изменено
Следующий отрывок работал на меня (удаляет все *.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", когда я открываю его. Это могло бы помочь Вам узнать, как изменить основной заголовок.