25

I'm using following code where I pass .pdf file names with their paths to create zip file.

for f in lstFileNames:
        with zipfile.ZipFile('reportDir' + str(uuid.uuid4()) + '.zip', 'w') as myzip:
            myzip.write(f)

It only archives one file though. I need to archive all files in my list in one single zip folder.

Before people start to point out, yes I have consulted answers from this and this link but the code given there doesn't work for me. The code runs but I can't find generated zip file anywhere in my computer.

A simple straightforward answer would be appreciated. Thanks.

Community
  • 1
  • 1
Tahreem Iqbal
  • 985
  • 6
  • 17
  • 43

1 Answers1

45

Order is incorrect. You are creating new zipfile object for each item in lstFileNames

Should be like this.

with zipfile.ZipFile('reportDir' + str(uuid.uuid4()) + '.zip', 'w') as myzip:
    for f in lstFileNames:   
        myzip.write(f)
Sardorbek Imomaliev
  • 14,861
  • 2
  • 51
  • 63