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
.
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...
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!