gpt4 book ai didi

python - 如何读取通过附加行不断更新的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:48 24 4
gpt4 key购买 nike

在我的终端中我正在运行:

curl --user dhelm:12345 \https://stream.twitter.com/1.1/statuses/sample.json > raw-data.txt

curl 的输出是正在写入文件 raw-data.txt 的实时流式 Twitter 数据

在 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 时,我想继续阅读。

最佳答案

我认为这是一个 XY problem .因为你想不出从 Python 中逐行流式传输 HTTP 请求的方法,你决定使用 curl 对文件进行流式下载,然后从 Python 中读取该文件.因为你这样做了,所以你必须处理在请求仍在进行时遇到 EOF 的可能性,只是因为你已经 catch 了 curl。所以你无缘无故地让自己变得更难。

虽然流式下载可以使用 stdlib 完成,但这有点痛苦; requests库使它变得容易得多。那么,让我们使用它:

import json
import requests
from requests.auth import HTTPBasicAuth

posts = []
url = 'https://stream.twitter.com/1.1/statuses/sample.json'
r = requests.get(url, auth=('dhelm', '12345'), stream=True)
for line in r.iter_lines():
try:
posts.append(json.loads(line))
except:
pass

这就是整个程序。

关于python - 如何读取通过附加行不断更新的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25457175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com