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

Python使用HTTP在远程文件上查找

荆亦
2023-03-14
问题内容

如何寻找远程(HTTP)文件上的特定位置,以便只能下载该部分?

可以说远程文件上的字节是:1234567890

我想寻找4并从那里下载3个字节,所以我会:456

而且,如何检查远程文件是否存在?我尝试了os.path.isfile(),但是当我传递远程文件URL时,它返回False。


问题答案:

如果要通过HTTP下载远程文件,则需要设置Range标题。

在此示例中检查如何完成。看起来像这样:

myUrlclass.addheader("Range","bytes=%s-" % (existSize))

编辑 :我刚刚发现一个更好的实现。此类很容易使用,因为可以在文档字符串中看到。

class HTTPRangeHandler(urllib2.BaseHandler):
"""Handler that enables HTTP Range headers.

This was extremely simple. The Range header is a HTTP feature to
begin with so all this class does is tell urllib2 that the 
"206 Partial Content" reponse from the HTTP server is what we 
expected.

Example:
    import urllib2
    import byterange

    range_handler = range.HTTPRangeHandler()
    opener = urllib2.build_opener(range_handler)

    # install it
    urllib2.install_opener(opener)

    # create Request and set Range header
    req = urllib2.Request('http://www.python.org/')
    req.header['Range'] = 'bytes=30-50'
    f = urllib2.urlopen(req)
"""

def http_error_206(self, req, fp, code, msg, hdrs):
    # 206 Partial Content Response
    r = urllib.addinfourl(fp, hdrs, req.get_full_url())
    r.code = code
    r.msg = msg
    return r

def http_error_416(self, req, fp, code, msg, hdrs):
    # HTTP's Range Not Satisfiable error
    raise RangeError('Requested Range Not Satisfiable')

更新
:“更好的实现”已移至github:byterange.py文件中的excid3
/ urlgrabber



 类似资料:
  • 问题内容: 我正在使用使用大量ajax的grails创建一个web应用程序。我想使用ajax实现文件上传。我不知道如何使用ajax进行文件上传。我的示例GSP代码是: 我尝试了和。上传后,我想用结果更新“ updateArea”。结果,我打算显示上传文件的详细信息。 问题答案: 通过Ajax上载文件实际上是不可能的。您仍然可以使用隐藏的iframe在后台上传文件,并评估响应(位于iframe内)或

  • 问题内容: 如何在Java中检查Java文件是否存在于具有URL的远程服务器上(由HTTP服务)?我不想下载该文件,只需检查其存在。 问题答案: import java.net.; import java.io. ; 如果与URL的连接(使用HttpURLConnection)以HTTP状态代码200返回,则该文件存在。 编辑: 请注意,由于我们只关心它的存在与否,所以不需要请求整个文档。我们可以

  • 我想在远程服务器上上传文件,目前我只能在本地机器上上传。下面是我的代码 提前感谢!

  • 我的JMeter测试应该将文件上传到web服务。 上载请求在标头中包含用户名和文件名。用户名和文件名列在 CSV 文件中。 在我的本地机器上,jmx文件、csv文件和所有测试数据都在同一个目录中。这个测试在这里非常有效。 然而,如果我启动测试远程,远程机器使用正确的用户名和文件名,但找不到文件,因为它显然不在JMeter的BaseDir中。 有没有将测试数据发送到远程服务器的最佳实践,或者我每次都

  • 问题内容: 我正在寻找一种轻松播放远程 .mp3 文件的解决方案。我看过适用于本地文件的“ pyglet”模块,但似乎无法处理远程文件。我可以临时下载 .mp3 文件,但是由于 .mp3 文件看起来太大,因此不建议这样做。 我宁愿它用于跨平台而不是仅用于Windows等。 例如,播放来自以下位置的音频文件: http://example.com/sound.mp3 只需在下载文件时流式传输文件,我

  • 问题内容: 我正在寻找一种简单的方法来获取位于远程服务器上的文件。为此,我在Windows XP上创建了本地ftp服务器,现在我想为测试Applet提供以下地址: 当然,我会收到以下错误: URI方案不是“文件” 我一直在尝试其他方法来获取文件,但它们似乎没有用。我该怎么办?(我也很想执行HTTP请求) 问题答案: 您不能使用ftp开箱即用。 如果文件位于http上,则可以执行以下操作: 如果要使