我有一个带有70 + k json对象的.txt文件,它是通过从twitter提取数据并使用以下方式转储到文件中获得的:
with open("followers.txt", 'a') as f:
for follower in limit_handled(tweepy.Cursor(api.followers, screen_name=account_name).pages()):
for user_obj in follower:
json.dump(user_obj._json, f)
f.write("\n")
当我尝试使用下面的代码在python中读取它时:
import json
with open('followers.txt') as json_data:
follower_data = json.load(json_data)
我收到错误:
ValueError: Extra data: line 2 column 1 - line 2801 column 1 (char 1489 - 8679498)
当我使用上面相同的代码读取一个从原始文件复制的json对象的测试文件时,它有效。一旦我向该文件添加第二个json对象,然后使用上面相同的代码就会出现错误:
ValueError: Extra data: line 2 column 1 - line 2 column 2376 (char 1489 - 3864)
如何使用多个json对象读取文件?
答案 0 :(得分:2)
当您编写JSON时会出现问题。您必须编写单个JSON对象,因此您还可以加载单个JSON对象。目前,您正在编写多个单独的对象,从而导致错误。
稍微修改你的写代码:
json_data = []
with open("followers.txt", 'a') as f:
for follower in limit_handled(tweepy.Cursor(api.followers, screen_name=account_name).pages()):
for user_obj in follower:
json_data.append(user_obj._json)
# outside the loops
json.dump(json_data, f)
现在,在阅读时,您的现有代码应该可行。你会得到一个词典列表。
答案 1 :(得分:1)
当然最好从根处理问题:按照COLDSPEED的建议写一个json并阅读它。
但是,如果您已将多个json对象写入单个文件,则可以尝试使用以下代码来使用已创建的文件:
import json
follower_data = [] # a list of all objects
with open('followers.txt') as json_data:
for line in json_data:
follower_data.append( json.loads(line) )
假设你在json对象写入'flowers.txt'
时没有缩进它们,那么文件中的每一行都是一个可以独立解析的json对象。