【发布时间】:2014-08-23 00:04:37
【问题描述】:
在我的终端中我正在运行:
curl --user dhelm:12345 \https://stream.twitter.com/1.1/statuses/sample.json > raw-data.txt
curl 的输出是实时流式 Twitter 数据,正在写入文件 raw-data.txt
在python中,
import json
posts = []
for line in open("/Users/me/raw-data.txt"):
try:
posts.append(json.loads(line))
except:
pass
我正在用 python 读取文件并使用 json 解码器并将结果附加到帖子中。
现在,问题是我不希望我的程序在 python 脚本到达文件末尾时结束。相反,当我的终端上运行的 curl 将更多帖子附加到文件 raw-data.txt 时,我想继续阅读。
【问题讨论】:
-
您是否有理由要使用
curl而不是在 Python 中使用例如requests? -
@abarnert 返回的数据是流数据。因此,如果我尝试来自 Python 内部的请求,它是一个无限循环……我需要在某个时候停下来处理数据。所以我想,我可以在终端中运行 curl 并从 Python 读取结果
-
requests可以进行流式下载。只需一次从套接字读取一行,处理该行,然后返回下一行。 -
@abarnert 你建议我使用 urllib2 来做到这一点吗?还是使用 requests 包?
-
我建议
requests。默认情况下,urllib2将尝试阻止,直到它下载整个页面……在这种情况下,这意味着永远。当然requests也是如此,但是urllib2很难隐藏,而requests只需添加stream=True。