Python“while true”循环不会结束(使用Python Tweepy)
问题描述:
下面的代码似乎主要是“工作”。这意味着它会在特定的一天中从Twitter API中删除所有推文。虽然它似乎是真正的循环不断,而我没有看到预期的“成品!!”字符串即使通过csv文件也是完整的。Python“while true”循环不会结束(使用Python Tweepy)
import tweepy
import time
import csv
ckey = "xxx"
csecret = "xxx"
atoken = "xxx-xxx"
asecret = "xxx"
OAUTH_KEYS = {'consumer_key':ckey, 'consumer_secret':csecret,
'access_token_key':atoken, 'access_token_secret':asecret}
auth = tweepy.OAuthHandler(OAUTH_KEYS['consumer_key'], OAUTH_KEYS['consumer_secret'])
api = tweepy.API(auth)
startSince = '2014-10-03'
endUntil = '2014-10-04'
suffix = '_03OCT2014.csv'
searchTerms = 'xyz'
tweets = tweepy.Cursor(api.search, q=searchTerms,
since=startSince, until=endUntil).items()
while True:
try:
for tweet in tweets:
placeHolder = []
placeHolder.append(tweet.author.name.encode('utf8'))
placeHolder.append(tweet.author.screen_name.encode('utf8'))
placeHolder.append(tweet.created_at)
prefix = 'TweetData_xyz'
wholeFileName = prefix + suffix
with open(wholeFileName, "ab") as f:
writeFile = csv.writer(f)
writeFile.writerow(placeHolder)
except tweepy.TweepError:
time.sleep(60*15)
continue
except IOError:
time.sleep(60*5)
continue
except StopIteration:
break
print "Finished!!!"
答
StopIteration
从未在您的代码中引发。如果for
声明被tweepy.Cursor().items()
所提出,则它会被捕获,则不会被进一步传播。
刚打出来,如果for
循环结束:
while True:
try:
for tweet in tweets:
# do stuff
# completed iterating successfully
break
,并完全消除except StopIteration:
处理程序。
答
您的代码没有退出条件。 看来你不想退出循环,如果你有错误抛出。所以我认为当你到达尽头时你想退出,是的?
def process_tweet(tweet):
placeHolder = []
placeHolder.append(tweet.author.name.encode('utf8'))
placeHolder.append(tweet.author.screen_name.encode('utf8'))
placeHolder.append(tweet.created_at)
prefix = 'TweetData_xyz'
wholeFileName = prefix + suffix
with open(wholeFileName, "ab") as f:
writeFile = csv.writer(f)
writeFile.writerow(placeHolder)
while True:
try:
for tweet in tweets:
process_tweet(tweet)
break
except tweepy.TweepError:
time.sleep(60*15)
continue
except IOError:
time.sleep(60*5)
continue
except StopIteration:
break
print "Finished!!!"
如果它永远不会创建一个异常它永远不会结束循环 – user28470 2014-10-07 09:43:11