用Python下载部分大文件

2024-04-25 10:01:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须从一个包含数百万行文本数据的网页上读取前几千条记录。我还需要在我自己的机器上复制这些数据。如果这意味着写一个文本文件或下载整个东西一次,我是漠不关心的,我一直在尝试做后者。你知道吗

但是,页面太长,每次我试图请求数百万行时,都会耗尽内存。你知道吗

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请求(我真的不关心我得到多少条记录,也许我会将它限制在1GB左右,看看这是否足够记录)。但我不知道如何使用tell()或其他任何东西,当我看不到如何在中途停止urllib.request.urlretrieve。你知道吗


Tags: 数据in文本机器url网页osrequest