How do I delete or replace a file in a zip archive?
Question:
I’m creating a program in Python which downloads a set of files and puts them into an archive with the zipfile module.
I already found out how to append to the archive, but there are cases where the files in the archive already exist and should be overwritten.
Currently, if I append an already existing file to the archive I get a duplicate.
Does anyone know how to delete a file in an archive?
Answers:
From http://docs.python.org/2/library/zipfile
ZipFile.namelist()
Return a list of archive members by name.
So it is trivial to get hold of the members list before appending to the file and performing a check operation against the list of existing members within the archive.
In addition: removing from a ZIP file is not supported. You need to write a new archive
if needed and copy over existing files and omit the file to be removed.
See also
I’m creating a program in Python which downloads a set of files and puts them into an archive with the zipfile module.
I already found out how to append to the archive, but there are cases where the files in the archive already exist and should be overwritten.
Currently, if I append an already existing file to the archive I get a duplicate.
Does anyone know how to delete a file in an archive?
From http://docs.python.org/2/library/zipfile
ZipFile.namelist()
Return a list of archive members by name.
So it is trivial to get hold of the members list before appending to the file and performing a check operation against the list of existing members within the archive.
In addition: removing from a ZIP file is not supported. You need to write a new archive
if needed and copy over existing files and omit the file to be removed.
See also