当前位置: 首页 > 面试题库 >

是否有一个用于从远程zip检索文件的库?

穆高澹
2023-03-14
问题内容

目标只是使用描述的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帐