'Why Python zipfile module creates full path inside the zip file
I need to zip all files in a given directory(inside test1) into a zip file.
My code is
import zipfile
zipf = zipfile.ZipFile('/media/test/test1/'+'my_zip.zip', 'w', zipfile.ZIP_DEFLATED)
#Here I mentioned the path for specifying where the zip file should created
path='/media/test/test1/'
for root, dirs, files in os.walk(path):
for file in files:
if not str(file).endswith('.zip'):
zipf.write(os.path.join(root, file))
zipf.close()
This gives the output of my_zip.zip
When I open this, it contains each subfolder like media>test>test1>files in test 1
But I don't want this media>test>test1. How to achieve that?
Solution 1:[1]
If you do not pass the name that should be used in the archive, then zipfile
uses the path that was passed into write()
Try this:
zipf.write(os.path.join(root, file),
arcname=os.path.join(root.replace(path, '', 1), file))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Mike Organek |