thclpr
thclpr

Reputation: 5938

Create a zip file from a directory, but not his fullpath

Im trying to create a zipfile with the content of a folder ( some dirs and files ) using the code belllow:

import zip,os

path = "c:\\tester\\folderToZip"
zip = zipfile.ZipFile("zippedFolder.zip", "w")
for root, dirs, files in os.walk(path):
    for file in files:
        zip.write(os.path.join(root, file))
zip.close()

But after the code runs, when i check the zip file, the zip file, instead having the content of the folder "folderToZip" ( ex: f1,f2,f2, a.txt,b.txt,c.txt ) it have the full path of the variable path.

So, the question is, how can i create a zipfile based on a folder content, but not his fullpath ?

Upvotes: 1

Views: 97

Answers (1)

mata
mata

Reputation: 69042

write takes a second optional parameter arcname, which when specified will provide the name for the file stored. Use that to specify the name you want.

If you only want the filename:

import zip,os

path = "c:\\tester\\folderToZip"
zip = zipfile.ZipFile("zippedFolder.zip", "w")
for root, dirs, files in os.walk(path):
    for file in files:
        filename = os.path.join(root, file)
        zip.write(filename, filename)
zip.close()

Upvotes: 2

Related Questions