目标只是使用描述的HTTP范围方法来检索特定文件而不下载全部内容:http
:
//www.codeproject.com/KB/cs/remotezip.aspx
您可以使用更少的代码来更普遍地解决此问题。本质上,创建足够多的文件状对象供ZipFile使用。这样您就结束了,z = ZipFile(HttpFile(url))
它会动态下载所需的部分。这样做的好处是您编写的代码更少,并且不仅适用于zip文件,还适用于更多代码。(实际上,我想知道是否已经有类似的东西了……我没有找到。)
使用相同的想法,您还可以为HttpFile创建一个缓存包装程序,以避免重复下载。
这是代码:(请注意缺少错误处理)
#!/usr/bin/python
import urllib2
class HttpFile(object):
def __init__(self, url):
self.url = url
self.offset = 0
self._size = -1
def size(self):
if self._size < 0:
f = urllib2.urlopen(self.url)
self._size = int(f.headers["Content-length"])
return self._size
def read(self, count=-1):
req = urllib2.Request(self.url)
if count < 0:
end = self.size() - 1
else:
end = self.offset + count - 1
req.headers['Range'] = "bytes=%s-%s" % (self.offset, end)
f = urllib2.urlopen(req)
data = f.read()
# FIXME: should check that we got the range expected, etc.
chunk = len(data)
if count >= 0:
assert chunk == count
self.offset += chunk
return data
def seek(self, offset, whence=0):
if whence == 0:
self.offset = offset
elif whence == 1:
self.offset += offset
elif whence == 2:
self.offset = self.size() + offset
else:
raise Exception("Invalid whence")
def tell(self):
return self.offset
问题内容: 有谁知道一个允许我解析.PO文件的Java库?我只想创建ID和值的映射,以便将它们加载到数据库中。 问题答案: 根据Java gettext实用程序手册, 您可以使用程序将PO文件转换为ResourceBundle类,并使用java.util.ResourceBundle或gnu.gettext.GettextResource读取它- 我认为这是最有效的方法。Gettext-commo
问题内容: 我正在为我的组织设计Jenkins CICD管道,但我有以下问题。 我来自一个devops团队,该团队控制着多个开发团队的Jenkins渠道。我基本上想编写一个可以由多个团队运行的具有多个阶段的Jenkins文件。我知道可以将此Jenkins文件检入每个团队的Gitrepo,并且一旦对代码存储库进行更改,它就可以调用完整的管道。 为确保此JenkinsFile是可维护的并且对于此Jen
我正在开发一个专门用于在HDFS文件系统(位于)上使用Spark的Java程序。我的目标之一是检查HDFS上是否存在路径的文件。在本地调试程序时,我发现无法使用以下代码访问此远程文件 实际上,尝试在本地FS中而不是在HDFS上查找文件。顺便说一句,让前缀使崩溃,而取消它将回答,因为本地不存在。 的适当配置是什么,以使事情在本地和从Hadoop集群执行Java程序时正常工作? 编辑:我最后放弃了,把
我们正在努力从Maven迁移到Gradle。不幸的是,我们还有几个战争复盖物要处理。
问题内容: 我们有一段代码可以在我们的系统上生成一个zip文件。一切正常,但是有时该Zip文件在由FilZip或WinZip打开时被视为已损坏。 所以这是我的问题:我们如何以编程方式检查生成的zip文件是否损坏? 这是我们用于生成zip文件的代码: 我们在这里做错了什么吗? 编辑:实际上,上面的代码是绝对可以的。我的问题是我正在为用户重定向WRONG流。因此,与其打开一个zip文件,不如打开一个完
如果您下载了目录,Google 云端硬盘网络界面允许您下载单个.zip文件。但是,我发现没有办法使用API做到这一点。是否可以使用 API 在驱动器上创建多文件 zip? 更新:田木的代码有效!这太棒了!但是,我只能在我的个人帐户中使用它。我有两个 G Suite 管理员帐号,但出现以下错误消息: “抱歉,此时无法打开文件。 请检查地址,然后重试。” 我已经确认这可以在多个免费的个人google帐