简体   繁体   中英

how to create zip file on a absolute path using zipfile

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM