如何仅下载 Python 数据的前 x 个字节

Tim*_*ong 6 python urllib download python-2.7 urlretrieve

情况:要下载的文件是一个大文件(>100MB)。这需要相当长的时间,尤其是在互联网连接速度较慢的情况下。

问题:但是,我只需要文件头(前 512 个字节),它将决定是否需要下载整个文件。

问题:有没有办法只下载文件的前 512 个字节?

附加信息:目前下载是使用 Python2.7 中的 urllib.urlretrieve 完成的

Nie*_*iri 2

我认为curl并且head会比 Python 解决方案更好地工作:

curl https://my.website.com/file.txt | head -c 512 > header.txt

编辑:此外,如果您绝对必须将其包含在 Python 脚本中,则可以使用管道来执行命令subprocess执行curlhead

编辑2:对于完整的Python解决方案:该urlopen函数(urllib2.urlopen在Python 2和urllib.request.urlopenPython 3中)返回一个类似文件的流,您可以在该read流上使用该函数,它允许您指定多个字节。例如,urllib2.urlopen(my_url).read(512)将返回前 512 个字节my_url

  • `urlopen` 函数(Python 2 中的 `urllib2.urlopen` 和 Python 3 中的 `urllib.request.urlopen`)返回一个类似文件的流,您可以在其上使用 `read` 函数,它允许您指定一个字节数。例如,“urllib2.urlopen(my_url).read(512)”将返回“my_url”的前 512 个字节。但是,我不确定这将“仅”下载 512 字节,或者它是否会尝试在幕后下载整个文件并只返回前 512 个字节 (3认同)