在Python中下载部分大文件

时间:2017-06-09 03:45:35

标签: python python-3.x urllib

我必须从包含数百万行文本数据的网页中读取前几千条记录。我还需要在自己的机器上复制这些数据。如果这意味着写入文本文件或立即下载整个文件,我会无动于衷,而且我一直试图做后者。

但是,页面太长,以至于每次尝试请求数百万行时都会耗尽内存。

import os, urllib
os.chdir('/Users/myusername/onamac')
url="http://myurlhere.com/"
urllib.request.urlretrieve(url, 'myfilename')        

最终我得到了:

Traceback (most recent call last):
File "<ipython-input-38-0ebf43ee369f>", line 6, in <module>
 urllib.request.urlretrieve(url, 'mytweets')
File "/anaconda/lib/python3.6/urllib/request.py", line 281, in urlretrieve
 tfp.write(block)
OSError: [Errno 28] No space left on device

数据不是由行分隔,这是一个问题;它基本上是一系列字典,我最终希望使用json加载并读入一个大表。

当文件达到一定大小时,我曾经以某种方式停止urlretreive请求的其他想法(我并不特别关心我获得了多少记录,也许是我&#39 ; d将它限制在1 GB或其他东西,看看是否有足够的记录)。但是,当我不知道如何停止tell()时,我不确定如何使用urllib.request.urlretrieve或其他任何内容。

0 个答案:

没有答案