Traceback (most recent call last):
File "C:/Python/PyCharmProject/FaceBookCrawl/FBCrawl.py", line 254, in <module>
user_info_download.get_user_info(user_id,user_info_type,u_access_token)
File "C:\Python\PyCharmProject\FaceBookCrawl\user_info_download.py", line 51, in get_user_info
user_info_data.append(user_info_item)
MemoryError
Process finished with exit code 1
python程序想获取可能的facebook帐号信息,比如我的朋友,喜欢,提供...但是运行它会引发错误:
elif info_type == "user_friends" or "user_likes":
user_info_data.append(user_info_item)
它指向:
MemoryError
因为该语句导致{{1}}。请告诉我为什么以及如何纠正它。
答案 0 :(得分:1)
看起来你有一个无限循环:
while(user_info["data"]):
自user_info
的新作业:
user_info = requests.get(...
所有内部if
语句都不一定是真的。
同时,你继续追加这个循环中的列表:
user_info_data.append(user_info_item)
确保user_info["data"]
在某个时间点确实变为假。
这是问题代码:
elif info_type == "user_friends" or "user_likes":
user_info_data.append(user_info_item)
if "https://graph.facebook.com" in user_info["paging"]["cursors"]["after"]:
user_info = requests.get(user_info["paging"]["cursors"]["after"]).json()
您追加user_info_data
。但如果if "https://graph.facebook.com" in user_info["paging"]["cursors"]["after"]
如果为false,则会循环而不更新user_info
。下一个循环将完全相同。所以你继续循环并向user_info_data
添加相同的东西,直到你耗尽所有可用的内存。
答案 1 :(得分:0)
此elif声明
elif info_type == "user_friends" or info_type == "user_likes":
管理有多少项附加到违规列表。但是,elif条件将始终作为真值进行评估,并导致不需要的数据附加到列表中。
正确的代码: {{1}}
注意:这个问题是@Mike在答案中描述的问题的补充......两个问题都需要修复。