我有一个不断变化的json文件,其中有一个实时流的用户/观众加入和离开。我想将当前正在查看的所有用户和加入实时流的新用户附加到文本文件中。因此,脚本必须运行并附加新的查看器,直到实时流结束,查看器列表变为空
我的剧本不符合预期,所以我做错了什么,为什么我需要你的帮助
首先,我的while循环没有按预期工作。当列表为空时,它不会停止
第二,它只是在一个无限循环中运行,不断地附加所有的东西。因此,如果测试已经在文本文件中,那么它将不起作用
我希望你能帮我解决这个问题。我还是一个学习新手,所以把我当成一个需要它的孩子好好解释一下:D提前,谢谢你的帮助
预期行为:
while data['result']['list'] != '': # keep it running while list is not empty.
with open('test.txt', 'a+') as viewers: # open text file.
for users in data['result']['list']: # iterate json.
for line in viewers: # iterate text file
if users['userId'] in line: # look if userId is already in textfile.
break # all users has already been added to text file. No new users to add.
else: # append users to file.
viewers.write(users['nickName'] + '\n')
viewers.write(str(users['userId']) + '\n')
json输出如下所示,并且每当查看器加入或离开实时流时都会发生变化:
{
"code": 1,
"result": {
"liveType": 0,
"watchNum": 140,
"rank": 0,
"duringF": 0,
"list": [
{
"userId": 294782,
"nickName": "user1"
},
{
"userId": 200829,
"nickName": "user2"
}
],
"earning": 4183,
"likeNum": 233
},
"msg": "OK"
}
这段代码有很多问题
data
不会更改李>users['userId'] in line
将在userID是行的子字符串时匹配。因此,如果userID是10
,那么它将匹配101
或110
是否在同一行中。你需要做一个线的精确匹配李>对此的一个改进是检查JSON文件的修改时间是否自上一次迭代以来发生了变化,如果没有发生变化,则跳过循环的其余部分
相关问题 更多 >
编程相关推荐