在使用python执行期间多次将请求的响应写入json文件
Posted
技术标签:
【中文标题】在使用python执行期间多次将请求的响应写入json文件【英文标题】:Write response of a request into json file several times during execution with python 【发布时间】:2021-10-19 04:16:21 【问题描述】:我有一个应用程序向 API 发出 GET 请求,以每隔给定的秒数获取数据。我想要做的是将收到的每个响应写入单个(理想情况下为 json)文件以处理该数据,以便我可以将 json POST 请求发送到不同的 API。我有以下函数,当被调度程序调用时,它只写第一个响应,而不是一个。如何实现将所有响应写入单个文件以供以后使用的方法。
def send_request():
url = "API URL"
try:
# sending get request and saving the response as response object
r = requests.get(url = url)
except (requests.Timeout, requests.ConnectionError, requests.HTTPError) as err:
print("Error while trying to GET data")
print(err)
print(r.content)
data = json.loads(r.content)
#Json file writer
with open('data.json', 'w') as outfile:
json.dump(data, outfile,indent=4, sort_keys=True)
outfile.flush()
调度器看起来像这样:
from apscheduler.schedulers.blocking import BlockingScheduler as scheduler
if __name__ == '__main__':
sched = scheduler()
print(time.time())
sched.add_job(send_request, 'interval', seconds=60)
sched.start()
我知道这个调度器对于任务来说可能是多余的,但如果它不是导致问题的部分也没关系。
【问题讨论】:
【参考方案1】:每次重写时,您似乎只看到文件中的最后一个响应。
你应该追加到你的文件而不是重写它:
#Json file writer
with open('data.json', 'a') as outfile:
json.dump(data, outfile, indent=4, sort_keys=True)
outfile.flush()
注意open('data.json', 'a')
中的a
参数,它代表“追加”
【讨论】:
以上是关于在使用python执行期间多次将请求的响应写入json文件的主要内容,如果未能解决你的问题,请参考以下文章