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

5 投票
3 回答
1238 浏览
提问于 2025-04-16 10:42

我一直在寻找一个例子,想知道如何用Python通过HTTP连接只获取一个mp3文件的最后128个字节。请问在Python中,是否可以通过HTTP进行特定范围的文件访问呢?

3 个回答

1

试试这个叫做 httpheader 的模块(可以看看里面“使用http范围请求”的例子)。

5

你可以尝试只请求最后的128个字节,方法是使用Range头部字段

Range: bytes=-128
9

是的,可以通过HTTP使用urllib2来实现这个功能。

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()

在这个StackOverflow的问题中(Python在远程文件上寻址),有人问过这个问题并得到了回答。使用相同的解决方案,你只需要把字节设置为-128。HTTP手册中说明,当你使用负值时,它表示响应末尾的值数量。

撰写回答