我怎么读选定文件从一个远程Zip archive通过HTTP使用蟒蛇?
题
我需要读选定的文件、匹配的文件名称,从远程zip archive使用蟒蛇。我不想要保存完整的邮政编到一个临时文件(它不是很大,因此我可以处理一切在存储器)。
我已经写代码,它的工作,而我回答这个我自己所以我可以搜索它。但由于证据表明,我是一个笨与会者在计算器,我敢肯定有改进的空间。
解决方案
这里我是怎么做到的(攫取的所有文件的结局"。队伍"):
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
其他提示
谢谢马歇尔对你的问题和答案(我有同样的问题在不同的背景和遇到同样的困难类似文件的目的不是真的-文件)!只是作为一个更新:Python3.0,你的代码需要稍加修改:
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
这将做的工作,而不下载整个拉链文件!
记住,仅仅解一个压缩文件可能会导致 一个安全漏洞.
不隶属于 StackOverflow