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?
Select entries in the main WinZip window, right click on any selected file, and click Delete from the shortcut menu. WinZip will display one of two confirmation windows, depending on which view you are using. Default view: WinZip will ask for confirmation that you want to delete the selected files/folders.
To delete the compressed version, right-click the zipped folder > Choose [Delete].
In the Archive Delete window, expand the directory tree by clicking the plus sign (+) or folder icon next to the object you want to expand. Objects on the tree are grouped by archive package description. Select the archived objects that you want to delete. Click Delete.
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
Delete file from zipfile with the ZipFile Module
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With