Python Forum

Full Version: Failing to Zip files
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi, I'm trying to find files that have digits in a file name.
then I'd like to zip files to another directory.
My code finds the files I want and moves them to a directory I want but not as ZIP files Sad .
Any help will be appreciated.

from zipfile import ZipFile
import os
import glob
import os.path
 
pth = 'c:\\02'
zout= 'C:\\0001\\'
for fname in glob.glob('C:\\02\\*[0-9].*'):
    basename = os.path.basename(fname)
    fz = zout+basename
    with ZipFile(fz,'w') as zip: 
        zip.write(fz)
Do you want to write them all into one zipfile or each one into separate zipfiles?

You set pth, but then never use it, with c:\\02 hardcoded.

Line 11 is where you name the zipfile.
Line 12 is where you name the file you want to put in the zipfile.

You've used fz for both of these, which is incorrect. Probably you want to write the fname to the zip file.
Thanks bowlofred!

I tried your suggestions.
Still the script only copies files not zipps then up.
I actually tried to open one of the copied files, they all have extensions '.TXT' but it is not a'.TXT' file. I cannot really open it up. SO the script does something to the files.
here is a new version of the script:
from zipfile import ZipFile
import os
import glob
import os.path

zout= 'C:\\0001\\'
for fname in glob.glob('C:\\02\\*[0-9].*'):
    print (fname)
    basename = os.path.basename(fname)
    fz = zout+basename
    print (fz)
    with ZipFile(fz,'w') as zip: 
        zip.write(fname)
How are you trying to open it? It's a zipfile, but you didn't change the name, so it's got the same name as it had before. You should name the zipfile with a .zip ending.

for fname in glob.glob('C:\\02\\*[0-9].*'):
    print (fname)
    basename = os.path.basename(fname)
    fz = zout+basename
    print (fz)
    zipname = os.path.splitext(fz)[0] + ".zip"  # Change name to have .zip extension
    with ZipFile(zipname,'w') as zip:           # Use .zip name for zipfile
        zip.write(fname)
to bowlofred:
Thanks man!
I actually come up with my own solution.
It is not as short as yours... Smile

zout= 'C:\\0001\\'
for fname in glob.glob('C:\\02\\*[0-9].*'):
    basename = os.path.basename(fname)
    just_n = os.path.splitext(basename)[0]   
  
    fz = zout+just_n+'.zip'

    with ZipFile(fz,'w') as zip: 
        zip.write(fname,arcname=basename)
        print (zip)
I really appreciate your help!