I was trying to find a way to append a file into a zip file in python, but I could not find an easy way to do it.
When using zipfile built into python, using the 'a' append method doesn't overwrite files the way I expected it to. So this python module will overwrite the existing file when appending a file (which to me is the obvious solution).
There's no lack of StackOverflow posts and answers, but all of those were too specific to the specific post/issue.
So I decided to scratch my own itch, and make a library to handle it for myself and others.
https://pypi.org/project/appendzip/0.0.4/
barakplasma / append-zip
append a file into an existing zip file, overwriting the existing file of the same name if needed
append-zip
Appends a file to a zip file, overwriting the existing file there if necessary
Performance
Not efficient; extracts all the files in the zip, copies over the new file, and compresses a brand new zip replacing the original one. You will need enough disk space to duplicate the zip file.
Caveats
for some reason, windows has a different file length after unzipping (by 10-20 bytes). So beware how this works on windows
Getting started
install (on Mac)
$ python3 -m pip install appendzip
from appendzip.appendzip import appendzip
# before appendzip calendar.txt in the zip archive test.zip contains 2021-01-02
# before appendzip calendar.txt outside the zip contains 2022-02-03
appendzip(
pathlib.Path('test.zip'),
pathlib.Path('calendar.txt'),
'calendar.txt'
)
# after appendzip calendar.txt inside the zip contains 2022-02-03
# after, there is still only one file in the zip archive test.zip
MIT licensed
example of how to use it:
install (on Mac)
$ python3 -m pip install appendzip
from appendzip.appendzip import appendzip
# before appendzip calendar.txt in the zip archive test.zip contains 2021-01-02
# before appendzip calendar.txt outside the zip contains 2022-02-03
appendzip(
pathlib.Path('test.zip'),
pathlib.Path('calendar.txt'),
'calendar.txt'
)
# after appendzip calendar.txt inside the zip contains 2022-02-03
# after, there is still only one file in the zip archive test.zip
Top comments (1)
by the way, I want to fix the import, but I'm having a hard time figuring out setup.cfg