simple UnZip

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • noydb

    simple UnZip

    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:\\T emp")
    zips = glob.glob('*.zi p')

    for fzip in zips:
    if zipfile.is_zipf ile(fzip):
    print fzip," is a zip"
    z = zipfile.ZipFile (fzip,'r')
    lstName = z.namelist()
    sHgt = lstName[0]
    print "Unpacking",sHg t
    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\\dat a4event.zip")

    z = zipfile.ZipFile (event_zip, 'r')

    zList = z.namelist()

    for zItem in zList:
    print "Unpacking",zIt em
    zRead = z.read(zItem)
    z1File = open(zItem,'wb' )
    z1File.write(zR ead)
    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!
  • oj

    #2
    Re: simple UnZip

    On Jul 2, 2:39 pm, noydb <jenn.du...@gma il.comwrote:
    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:\\T emp")
    zips = glob.glob('*.zi p')
    >
    for fzip in zips:
        if zipfile.is_zipf ile(fzip):
            print fzip," is a zip"
            z = zipfile.ZipFile (fzip,'r')
            lstName = z.namelist()
            sHgt = lstName[0]
            print "Unpacking",sHg t
            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\\dat a4event.zip")
    >
    z = zipfile.ZipFile (event_zip, 'r')
    >
    zList = z.namelist()
    >
    for zItem in zList:
        print "Unpacking",zIt em
        zRead = z.read(zItem)
        z1File = open(zItem,'wb' )
        z1File.write(zR ead)
        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(ou tput_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.

    Comment

    • Chris

      #3
      Re: simple UnZip

      On Jul 2, 3:39 pm, noydb <jenn.du...@gma il.comwrote:
      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:\\T emp")
      zips = glob.glob('*.zi p')
      >
      for fzip in zips:
          if zipfile.is_zipf ile(fzip):
              print fzip," is a zip"
              z = zipfile.ZipFile (fzip,'r')
              lstName = z.namelist()
              sHgt = lstName[0]
              print "Unpacking",sHg t
              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\\dat a4event.zip")
      >
      z = zipfile.ZipFile (event_zip, 'r')
      >
      zList = z.namelist()
      >
      for zItem in zList:
          print "Unpacking",zIt em
          zRead = z.read(zItem)
          z1File = open(zItem,'wb' )
          z1File.write(zR ead)
          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\\dat a4event.zip")

      z = zipfile.ZipFile (event_zip, 'r')

      zList = z.namelist()

      for zItem in zList:
      print "Unpacking",zIt em
      zRead = z.read(zItem)
      z1File = open(os.path.jo in(folder_name, zItem),'wb')
      z1File.write(zR ead)
      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.

      Comment

      • =?iso-8859-1?q?C=E9dric_Lucantis?=

        #4
        Re: simple UnZip

        Le Wednesday 02 July 2008 15:39:51 noydb, vous avez écrit :
        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:\\T emp")
        zips = glob.glob('*.zi p')
        >
        for fzip in zips:
        if zipfile.is_zipf ile(fzip):
        print fzip," is a zip"
        z = zipfile.ZipFile (fzip,'r')
        lstName = z.namelist()
        sHgt = lstName[0]
        print "Unpacking",sHg t
        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\\dat a4event.zip")
        >
        z = zipfile.ZipFile (event_zip, 'r')
        >
        zList = z.namelist()
        >
        for zItem in zList:
        print "Unpacking",zIt em
        zRead = z.read(zItem)
        z1File = open(zItem,'wb' )
        z1File.write(zR ead)
        z1File.close
        namelist() returns a list of relative file names, so you can just put them
        anywhere you want with:

        zlFile = open(os.path.jo in(DESTDIR, zItem), 'wb')

        or change the current directory, but the first way should be preferred.
        print "Finished"
        &&&
        >
        This works, but I want to be able to specify a different output
        location.
        >
        --
        Cédric Lucantis

        Comment

        • noydb

          #5
          Re: simple UnZip

          On Jul 2, 10:07 am, Cédric Lucantis <o...@no-log.orgwrote:
          Le Wednesday 02 July 2008 15:39:51 noydb, vous avez écrit :
          >
          >
          >
          >
          >
          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:\\T emp")
          zips = glob.glob('*.zi p')
          >
          for fzip in zips:
              if zipfile.is_zipf ile(fzip):
                  print fzip," is a zip"
                  z = zipfile.ZipFile (fzip,'r')
                  lstName = z.namelist()
                  sHgt = lstName[0]
                  print "Unpacking",sHg t
                  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\\dat a4event.zip")
          >
          z = zipfile.ZipFile (event_zip, 'r')
          >
          zList = z.namelist()
          >
          for zItem in zList:
              print "Unpacking",zIt em
              zRead = z.read(zItem)
              z1File = open(zItem,'wb' )
              z1File.write(zR ead)
              z1File.close
          >
          namelist() returns a list of relative file names, so you can just put them
          anywhere you want with:
          >
          zlFile = open(os.path.jo in(DESTDIR, zItem), 'wb')
          >
          or change the current directory, but the first way should be preferred.
          >
          print "Finished"
          &&&
          >
          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.

          Comment

          • MRAB

            #6
            Re: simple UnZip

            On Jul 2, 3:07 pm, Cédric Lucantis <o...@no-log.orgwrote:
            Le Wednesday 02 July 2008 15:39:51 noydb, vous avez écrit :
            >
            >
            >
            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:\\T emp")
            zips = glob.glob('*.zi p')
            >
            for fzip in zips:
                if zipfile.is_zipf ile(fzip):
                    print fzip," is a zip"
                    z = zipfile.ZipFile (fzip,'r')
                    lstName = z.namelist()
                    sHgt = lstName[0]
                    print "Unpacking",sHg t
                    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\\dat a4event.zip")
            >
            z = zipfile.ZipFile (event_zip, 'r')
            >
            zList = z.namelist()
            >
            for zItem in zList:
                print "Unpacking",zIt em
                zRead = z.read(zItem)
                z1File = open(zItem,'wb' )
                z1File.write(zR ead)
                z1File.close
            It's not actually closing the file. It should be:

            z1File.close()
            >
            namelist() returns a list of relative file names, so you can just put them
            anywhere you want with:
            >
            zlFile = open(os.path.jo in(DESTDIR, zItem), 'wb')
            >
            or change the current directory, but the first way should be preferred.
            >
            print "Finished"
            &&&
            >
            This works, but I want to be able to specify a different output
            location.
            >
            --
            Cédric Lucantis

            Comment

            Working...