Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过http连接仅获取mp3文件的最后128字节_Python_Http_Tags_Mp3 - Fatal编程技术网

Python 通过http连接仅获取mp3文件的最后128字节

Python 通过http连接仅获取mp3文件的最后128字节,python,http,tags,mp3,Python,Http,Tags,Mp3,我一直在寻找python如何通过http连接仅获取mp3文件的最后128字节的示例。在python中可以通过HTTP访问特定于范围的文件吗 您可以尝试使用以下命令仅请求最后128个字节: 尝试该模块(请参阅“使用http范围请求”示例)。是的,可以使用urllib2通过http执行此操作 class HTTPRangeHandler(urllib2.BaseHandler): def http_error_206(self, req, fp, code, msg, hdrs):

我一直在寻找python如何通过http连接仅获取mp3文件的最后128字节的示例。在python中可以通过HTTP访问特定于范围的文件吗

您可以尝试使用以下命令仅请求最后128个字节:


尝试该模块(请参阅“使用http范围请求”示例)。

是的,可以使用urllib2通过http执行此操作

class HTTPRangeHandler(urllib2.BaseHandler):

    def http_error_206(self, req, fp, code, msg, hdrs):
        # Range header supported
        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):
        # Range header not supported
        raise URLError('Requested Range Not Satisfiable')

opener = urllib2.build_opener(HTTPRangeHandler)
urllib2.install_opener(opener)

rangeheader = {'Range':'bytes=-128'}
req = urllib2.Request('http://path/to/your/file.mp3',headers=rangeheader)
res = urllib2.urlopen(req)
res.read()
下面的问题()已被询问/回答。
使用相同的解决方案时,只需将字节设置为-128。(HTTP手册描述,当您执行-value时,它是响应末尾的值数量)

您应该包括,代码应该检查返回的HTTP状态是否为206(部分内容),而不是200(确定)。这样就可以检测到服务器是否支持范围标头。@Martin。是的,应该是。更新。
class HTTPRangeHandler(urllib2.BaseHandler):

    def http_error_206(self, req, fp, code, msg, hdrs):
        # Range header supported
        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):
        # Range header not supported
        raise URLError('Requested Range Not Satisfiable')

opener = urllib2.build_opener(HTTPRangeHandler)
urllib2.install_opener(opener)

rangeheader = {'Range':'bytes=-128'}
req = urllib2.Request('http://path/to/your/file.mp3',headers=rangeheader)
res = urllib2.urlopen(req)
res.read()