Python在while循环中将json附加到json文件中

Python在while循环中将json附加到json文件中,python,json,python-requests,github-api,writefile,Python,Json,Python Requests,Github Api,Writefile,我正在尝试使用Python请求库从GithubAPI获取所有用户信息。这是我的密码: import requests import json url = 'https://api.github.com/users' token = "my_token" headers = {'Authorization': 'token %s' % token} r = requests.get(url, headers=headers) users = r.json() with open('users.

我正在尝试使用Python请求库从GithubAPI获取所有用户信息。这是我的密码:

import requests
import json

url = 'https://api.github.com/users'
token = "my_token"
headers = {'Authorization': 'token %s' % token}

r = requests.get(url, headers=headers)
users = r.json()
with open('users.json', 'w') as outfile:
    json.dump(users, outfile)
现在我可以将用户的第一页转储到json文件中。我还可以找到“下一页”的url:

next_url = r.links['next'].get('url')
r2 = requests.get(next_url, headers=headers)
users2 = r2.json()
既然我还不知道有多少页,我怎么能加上第2页,第3页。。。在while循环中以尽可能快的速度将页面按顺序转到“users.json”


谢谢

将从
请求
查询中获得的数据附加到一个列表中,然后转到下一个查询


一旦获得了所需的所有数据,然后继续尝试将数据连接到文件或对象中。您也可以使用
线程
并行执行多个查询,但很可能api上会有速率限制。

首先,您需要以“a”模式打开文件,否则子序列写入将覆盖所有内容

import requests
import json

url = 'https://api.github.com/users'
token = "my_token"
headers = {'Authorization': 'token %s' % token}

outfile = open('users.json', 'a')

while True:
    r = requests.get(url, headers=headers)
    users = r.json()
    json.dump(users, outfile)
    url = r.links['next'].get('url')
    # I don't know what Github return in case there is no more users, so you need to double check by yourself
    if url == '':
        break

outfile.close()

谢谢你的回答。我只能用工作代码标记一个。你的推荐绝对正确。非常感谢!GitHub API的速率限制为5000个请求/小时。按照您的回答,在上一次运行被限制停止后,如何在新运行中继续写入文件?您应该在每个请求后添加
time.sleep(1)