I am trying to create a zip file of files from different directories. At the end, I want to save that zip file to a different path than python file python. I have the following code snippet
def zipfile_method(file_list):
try:
zip_path = os.path.abspath('/Users/nirmalsarswat/Document/jdk.zip')
print(zip_path)
zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
for files in file_list:
path = os.path.abspath(files)
zip_file.write(path)
zip_file.close()
except Exception as e:
print("exception occured during compression %s" % e)
zipfile_method(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf'])
Path of my python file is /Users/nirmalsarswat/Desktop/app.py
.
I expect that file path would be on /Users/nirmalsarswat/Document/jdk.zip
but zipfile saves it on the same folder of python file like this /Users/nirmalsarswat/Desktop/Users/nirmalsarswat/Document/jdk.zip
.
How I can make to save the file on /Users/nirmalsarswat/Document/jdk.zip
path
I am using MacOS, Python 3.6.4, Thanks in advance !!!
Actually what I can see is, you are doing correct but you are confused with paths. When you pass the only absolute path to write
, it will zip the file with a complete directory which seems the problem you are facing.
Try parsing basename
with write
and it will work fine, like this
from os.path import basename # add this to your imports
def zipfile_method(file_list):
try:
zip_path = os.path.abspath('/Users/nirmalsarswat/Document/jdk.zip') # no need to this one, parse string itself
print(zip_path)
zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
for files in file_list:
path = os.path.abspath(files)
zip_file.write(path, basename(path))
zip_file.close()
except Exception as e:
print("exception occured during compression %s" % e)
zipfile_method(['/Users/nirmalsarswat/Desktop/jdk-8u171-macosx-x64.dmg', '/Users/nirmalsarswat/Desktop/resume-nirmal-sarswat.pdf'])
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.