我正在尝试使用名单列表查询Twitter API并获取他们的朋友列表。 API部分很好,但我无法弄清楚如何通过前5个名称,拉结果,等待一段时间来尊重速率限制,然后在下一个5再次执行,直到列表结束。我遇到麻烦的代码就是:
first = 0
last = 5
while last < 15: #while last group of 5 items is lower than number of items in list#
for item in list[first:last]: #parses each n twitter IDs in the list#
results = item
text_file = open("output.txt", "a") #creates empty txt output / change path to desired output#
text_file.write(str(item) + "," + results + "\n") #adds twitter ID, resulting friends list, and a line skip to the txt output#
text_file.close()
first = first + 5 #updates list navigation to move on to next group of 5#
last = last + 5
time.sleep(5) #suspends activities for x seconds to respect rate limit#
这个脚本不应该通过列表中的前5个项目,将它们添加到输出文件中,然后更改first:last参数并循环它直到“last”变量为15或更高?
答案 0 :(得分:1)
不,因为你的缩进是错误的。一切都发生在for循环中,所以它会处理一个项目,然后先改变最后一个,然后再睡觉...
将最后三行移回一个缩进,以便它们与for
语句对齐。这样,他们将在前五个完成后执行。
答案 1 :(得分:0)
Daniel发现了这个问题,但这里有一些代码改进建议:
first, last = 0, 5
with open("output.txt", "a") as text_file:
while last < 15:
for twitter_ID in twitter_IDs[first:last]:
text_file.write("{0},{0}\n".format(twitter_ID))
first += 5
last += 5
time.sleep(5)
正如您所看到的,我删除了results = item,因为它似乎是多余的,利用了with open...
,还使用了+=
来增加。
你能解释一下为什么你在做item = results?