simple UnZip
Question posted by: noydb
(Guest)
on
July 2nd, 2008 01:45 PM
Can someone help me with this script, which I found posted elsewhere?
I'm trying to figure out what is going on here so that I can alter it
for my needs, but the lack of descriptive names is making it
difficult. And, the script doesn't quite do anything worthwhile -- it
unzips one file from a zipfile, not all files in a zipfile.
***
import zipfile, os, sys, glob
os.chdir("C:\\Temp")
zips = glob.glob('*.zip')
for fzip in zips:
if zipfile.is_zipfile(fzip):
print fzip," is a zip"
z = zipfile.ZipFile(fzip,'r')
lstName = z.namelist()
sHgt = lstName[0]
print "Unpacking",sHgt
hgt = z.read(sHgt)
fHgt = open(sHgt,'wb')
fHgt.write(hgt)
# fHgt.flush
fHgt.close
print "Finished"
***
I changed it somewhat to
&&&
import zipfile, os, sys
event_zip = ("C:\\Temp\\data4event.zip")
z = zipfile.ZipFile(event_zip, 'r')
zList = z.namelist()
for zItem in zList:
print "Unpacking",zItem
zRead = z.read(zItem)
z1File = open(zItem,'wb')
z1File.write(zRead)
z1File.close
print "Finished"
&&&
This works, but I want to be able to specify a different output
location.
The scenario is that the zip file will always be the same (gets copied
over daily), but it needs to be unzipped to a specific different
directory.
Can anyone help?
Thanks!
|
|
July 2nd, 2008 02:05 PM
# 2
|
Re: simple UnZip
On Jul 2, 2:39*pm, noydb <jenn.du...@gmail.comwrote:
Quote:
Can someone help me with this script, which I found posted elsewhere?
I'm trying to figure out what is going on here so that I can alter it
for my needs, but the lack of descriptive names is making it
difficult. *And, the script doesn't quite do anything worthwhile -- it
unzips one file from a zipfile, not all files in a zipfile.
>
***
import zipfile, os, sys, glob
>
os.chdir("C:\\Temp")
zips = glob.glob('*.zip')
>
for fzip in zips:
* * if zipfile.is_zipfile(fzip):
* * * * print fzip," is a zip"
* * * * z = zipfile.ZipFile(fzip,'r')
* * * * lstName = z.namelist()
* * * * sHgt = lstName[0]
* * * * print "Unpacking",sHgt
* * * * hgt = z.read(sHgt)
* * * * fHgt = open(sHgt,'wb')
* * * * fHgt.write(hgt)
* * * * # fHgt.flush
* * * * fHgt.close
print "Finished"
***
>
I changed it somewhat to
&&&
import zipfile, os, sys
>
event_zip = ("C:\\Temp\\data4event.zip")
>
z = zipfile.ZipFile(event_zip, 'r')
>
zList = z.namelist()
>
for zItem in zList:
* * print "Unpacking",zItem
* * zRead = z.read(zItem)
* * z1File = open(zItem,'wb')
* * z1File.write(zRead)
* * z1File.close
print "Finished"
&&&
>
This works, but I want to be able to specify a different output
location.
>
The scenario is that the zip file will always be the same (gets copied
over daily), but it needs to be unzipped to a specific different
directory.
>
Can anyone help?
>
Thanks!
|
Firstly, I'd recommend just reading the documentation for the zipfile
module, it's fairly straight forwards.
To write the files to a different location, just change this line:
z1File = open(zItem,'wb')
This is where you're opening a file to write to.
Try something like:
z1File = open( os.path.join(output_dir, zItem), 'wb')
to write the files into the path specified in output_dir.
You don't even have to save the files with the same names they have in
the zipfile; you don't have to save the files at all. In one project
I'm working on, I just read files from a zip file into memory and
process them there.
|
|
July 2nd, 2008 02:05 PM
# 3
|
Re: simple UnZip
On Jul 2, 3:39*pm, noydb <jenn.du...@gmail.comwrote:
Quote:
Can someone help me with this script, which I found posted elsewhere?
I'm trying to figure out what is going on here so that I can alter it
for my needs, but the lack of descriptive names is making it
difficult. *And, the script doesn't quite do anything worthwhile -- it
unzips one file from a zipfile, not all files in a zipfile.
>
***
import zipfile, os, sys, glob
>
os.chdir("C:\\Temp")
zips = glob.glob('*.zip')
>
for fzip in zips:
* * if zipfile.is_zipfile(fzip):
* * * * print fzip," is a zip"
* * * * z = zipfile.ZipFile(fzip,'r')
* * * * lstName = z.namelist()
* * * * sHgt = lstName[0]
* * * * print "Unpacking",sHgt
* * * * hgt = z.read(sHgt)
* * * * fHgt = open(sHgt,'wb')
* * * * fHgt.write(hgt)
* * * * # fHgt.flush
* * * * fHgt.close
print "Finished"
***
>
I changed it somewhat to
&&&
import zipfile, os, sys
>
event_zip = ("C:\\Temp\\data4event.zip")
>
z = zipfile.ZipFile(event_zip, 'r')
>
zList = z.namelist()
>
for zItem in zList:
* * print "Unpacking",zItem
* * zRead = z.read(zItem)
* * z1File = open(zItem,'wb')
* * z1File.write(zRead)
* * z1File.close
print "Finished"
&&&
>
This works, but I want to be able to specify a different output
location.
>
The scenario is that the zip file will always be the same (gets copied
over daily), but it needs to be unzipped to a specific different
directory.
>
Can anyone help?
>
Thanks!
|
Well, how is the output directory different ? Is it just a timestamp
like 'YYYYMMDD' that obviously changes every day or is it named after
the file used ? If it is timestamp style you can do
import zipfile, os, sys, time
folder_name = time.strftime("%Y%m%d", time.localtime(time.time()))
event_zip = ("C:\\Temp\\data4event.zip")
z = zipfile.ZipFile(event_zip, 'r')
zList = z.namelist()
for zItem in zList:
print "Unpacking",zItem
zRead = z.read(zItem)
z1File = open(os.path.join(folder_name, zItem),'wb')
z1File.write(zRead)
z1File.close
print "Finished"
That will create a folder in your current working directory with the
name of todays date and unzip it there. This is just one example
route.
|
|
July 2nd, 2008 02:15 PM
# 4
|
Re: simple UnZip
Le Wednesday 02 July 2008 15:39:51 noydb, vous avez écrit*:
Quote:
Can someone help me with this script, which I found posted elsewhere?
I'm trying to figure out what is going on here so that I can alter it
for my needs, but the lack of descriptive names is making it
difficult. And, the script doesn't quite do anything worthwhile -- it
unzips one file from a zipfile, not all files in a zipfile.
>
***
import zipfile, os, sys, glob
>
os.chdir("C:\\Temp")
zips = glob.glob('*.zip')
>
for fzip in zips:
if zipfile.is_zipfile(fzip):
print fzip," is a zip"
z = zipfile.ZipFile(fzip,'r')
lstName = z.namelist()
sHgt = lstName[0]
print "Unpacking",sHgt
hgt = z.read(sHgt)
fHgt = open(sHgt,'wb')
fHgt.write(hgt)
# fHgt.flush
fHgt.close
print "Finished"
***
>
I changed it somewhat to
&&&
import zipfile, os, sys
>
event_zip = ("C:\\Temp\\data4event.zip")
>
z = zipfile.ZipFile(event_zip, 'r')
>
zList = z.namelist()
>
for zItem in zList:
print "Unpacking",zItem
zRead = z.read(zItem)
z1File = open(zItem,'wb')
z1File.write(zRead)
z1File.close
|
namelist() returns a list of relative file names, so you can just put them
anywhere you want with:
zlFile = open(os.path.join(DESTDIR, zItem), 'wb')
or change the current directory, but the first way should be preferred.
Quote:
print "Finished"
&&&
>
This works, but I want to be able to specify a different output
location.
>
|
--
Cédric Lucantis
|
|
July 2nd, 2008 02:25 PM
# 5
|
Re: simple UnZip
On Jul 2, 10:07*am, Cédric Lucantis <o...@no-log.orgwrote:
Quote:
Le Wednesday 02 July 2008 15:39:51 noydb, vous avez écrit*:
>
>
>
>
>
Quote:
Can someone help me with this script, which I found posted elsewhere?
I'm trying to figure out what is going on here so that I can alter it
for my needs, but the lack of descriptive names is making it
difficult. *And, the script doesn't quite do anything worthwhile -- it
unzips one file from a zipfile, not all files in a zipfile.
|
>
Quote:
***
import zipfile, os, sys, glob
|
>
Quote:
os.chdir("C:\\Temp")
zips = glob.glob('*.zip')
|
>
Quote:
for fzip in zips:
* * if zipfile.is_zipfile(fzip):
* * * * print fzip," is a zip"
* * * * z = zipfile.ZipFile(fzip,'r')
* * * * lstName = z.namelist()
* * * * sHgt = lstName[0]
* * * * print "Unpacking",sHgt
* * * * hgt = z.read(sHgt)
* * * * fHgt = open(sHgt,'wb')
* * * * fHgt.write(hgt)
* * * * # fHgt.flush
* * * * fHgt.close
print "Finished"
***
|
>
Quote:
I changed it somewhat to
&&&
import zipfile, os, sys
|
>
Quote:
event_zip = ("C:\\Temp\\data4event.zip")
|
>
Quote:
z = zipfile.ZipFile(event_zip, 'r')
|
>
Quote:
zList = z.namelist()
|
>
Quote:
for zItem in zList:
* * print "Unpacking",zItem
* * zRead = z.read(zItem)
* * z1File = open(zItem,'wb')
* * z1File.write(zRead)
* * z1File.close
|
>
namelist() returns a list of relative file names, so you can just put them
anywhere you want with:
>
zlFile = open(os.path.join(DESTDIR, zItem), 'wb')
>
or change the current directory, but the first way should be preferred.
>
Quote:
print "Finished"
&&&
|
>
Quote:
This works, but I want to be able to specify a different output
location.
|
>
--
Cédric Lucantis- Hide quoted text -
>
- Show quoted text -
|
Thanks everyone! I did read the help on zipfile. I know it was
simple, but for newbies, sometimes it just helps to see how it is done
and learn from that.
|
|
July 2nd, 2008 03:35 PM
# 6
|
Re: simple UnZip
On Jul 2, 3:07*pm, Cédric Lucantis <o...@no-log.orgwrote:
Quote:
Le Wednesday 02 July 2008 15:39:51 noydb, vous avez écrit*:
>
>
>
Quote:
Can someone help me with this script, which I found posted elsewhere?
I'm trying to figure out what is going on here so that I can alter it
for my needs, but the lack of descriptive names is making it
difficult. *And, the script doesn't quite do anything worthwhile -- it
unzips one file from a zipfile, not all files in a zipfile.
|
>
Quote:
***
import zipfile, os, sys, glob
|
>
Quote:
os.chdir("C:\\Temp")
zips = glob.glob('*.zip')
|
>
Quote:
for fzip in zips:
* * if zipfile.is_zipfile(fzip):
* * * * print fzip," is a zip"
* * * * z = zipfile.ZipFile(fzip,'r')
* * * * lstName = z.namelist()
* * * * sHgt = lstName[0]
* * * * print "Unpacking",sHgt
* * * * hgt = z.read(sHgt)
* * * * fHgt = open(sHgt,'wb')
* * * * fHgt.write(hgt)
* * * * # fHgt.flush
* * * * fHgt.close
print "Finished"
***
|
>
Quote:
I changed it somewhat to
&&&
import zipfile, os, sys
|
>
Quote:
event_zip = ("C:\\Temp\\data4event.zip")
|
>
Quote:
z = zipfile.ZipFile(event_zip, 'r')
|
>
Quote:
zList = z.namelist()
|
>
Quote:
for zItem in zList:
* * print "Unpacking",zItem
* * zRead = z.read(zItem)
* * z1File = open(zItem,'wb')
* * z1File.write(zRead)
* * z1File.close
|
|
It's not actually closing the file. It should be:
z1File.close()
Quote:
>
namelist() returns a list of relative file names, so you can just put them
anywhere you want with:
>
zlFile = open(os.path.join(DESTDIR, zItem), 'wb')
>
or change the current directory, but the first way should be preferred.
>
Quote:
print "Finished"
&&&
|
>
Quote:
This works, but I want to be able to specify a different output
location.
|
>
--
Cédric Lucantis
|
Not the answer you were looking for? Post your question . . .
190,076 Experts ready to help you find a solution.
Sign up for a free account, or Login (if you're already a member).
|