代码之家  ›  专栏  ›  技术社区  ›  insin

如何使用python通过HTTP从远程zip存档读取所选文件?

  •  10
  • insin  · 技术社区  · 17 年前

    我需要使用python从远程zip存档中读取选定的文件,文件名匹配。我不想将完整的zip文件保存到临时文件中(它没有那么大,所以我可以处理内存中的所有内容)。

    我已经写了代码,它可以工作了,我自己来回答这个问题,以便以后可以搜索它。但由于有证据表明我是StackOverflow上的一个哑巴参与者,我确信还有改进的空间。

    4 回复  |  直到 17 年前
        1
  •  9
  •   insin    17 年前

    import urllib2, cStringIO, zipfile
    
    try:
        remotezip = urllib2.urlopen(url)
        zipinmemory = cStringIO.StringIO(remotezip.read())
        zip = zipfile.ZipFile(zipinmemory)
        for fn in zip.namelist():
            if fn.endswith(".ranks"):
                ranks_data = zip.read(fn)
                for line in ranks_data.split("\n"):
                    # do something with each line
    except urllib2.HTTPError:
        # handle exception
    
        2
  •  3
  •   Tim Pietzcker    17 年前

    import urllib.request, io, zipfile
    
    try:
        remotezip = urllib.request.urlopen(url)
        zipinmemory = io.BytesIO(remotezip.read())
        zip = zipfile.ZipFile(zipinmemory)
        for fn in zip.namelist():
            if fn.endswith(".ranks"):
                ranks_data = zip.read(fn)
                for line in ranks_data.split("\n"):
                    # do something with each line
    except urllib.request.HTTPError:
        # handle exception
    
        4
  •  1
  •   Jim os x nerd    17 年前