在Python中打开URL并获取最多X字节的最佳方法是什么?
我想让一个机器人每小时获取一个URL,但是如果该站点的操作员是恶意的,他可以让他的服务器向我发送一个1GB的文件。有没有一种好方法可以将下载限制在100KB,然后在该限制之后停止 我可以想象从头开始编写自己的连接处理程序,但如果可能的话,我想使用urllib2,只是以某种方式指定限制在Python中打开URL并获取最多X字节的最佳方法是什么?,python,http,url,sockets,Python,Http,Url,Sockets,我想让一个机器人每小时获取一个URL,但是如果该站点的操作员是恶意的,他可以让他的服务器向我发送一个1GB的文件。有没有一种好方法可以将下载限制在100KB,然后在该限制之后停止 我可以想象从头开始编写自己的连接处理程序,但如果可能的话,我想使用urllib2,只是以某种方式指定限制 谢谢 这可能就是您想要的: import urllib def download(url, bytes = 1024): """Copy the contents of a file from a giv
谢谢 这可能就是您想要的:
import urllib
def download(url, bytes = 1024):
"""Copy the contents of a file from a given URL
to a local file.
"""
webFile = urllib.urlopen(url)
localFile = open(url.split('/')[-1], 'w')
localFile.write(webFile.read(bytes))
webFile.close()
localFile.close()
read()接受字节参数?太棒了,这正是我想要的,非常感谢!我在文件里找不到它。。。(python文件对象中最重要的方法是由python中几乎所有类似文件的对象实现的。)谢谢,我知道file.read(),但没有意识到url.read()中实现了相同的语义…上次我尝试这种技术时失败了,因为实际上不可能只从HTTP服务器读取指定数量的数据,即隐式读取所有HTTP响应,然后只读取其中的前N个字节。因此,最终您下载了整个1Gb恶意响应。有一种非常简单的方法可以读取X字节
urllib.urlopen(“url”).read(1024)