我需要使用Python从远程zip存档中读取与文件名匹配的所选文件.我不想将完整的zip保存到临时文件中(它不是那么大,所以我可以处理内存中的所有内容).
我已经编写了代码并且它可以工作,我自己也在回答这个问题,所以我可以在以后搜索它.但由于有证据表明我是Stackoverflow的笨蛋参与者之一,我相信还有改进的余地.
这是我如何做到的(抓取所有以".ranks"结尾的文件):
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