[英]breaking out of loop in loop and restarting script in python
這是我的twitterbot腳本。 它基於關鍵字進行搜索,然后轉發包含關鍵字的推文。 我需要打破此循環循環,並在出現錯誤代碼的情況下重新啟動腳本:
for row in retweeted_id:
try:
print(row)
twitter.api.retweet(row)
time.sleep(180)
except tweepy.TweepError, e:
if e == "[{u'message': u'You have already retweeted this tweet.', u'code': 327}]":
print(e)
break
elif e == "[{u'message': u'Rate limit exceeded', u'code': 88}]":
print(e)
time.sleep(60*5)
elif e == "[{u'message': u'User is over daily status update limit.', u'code': 185}]":
print(e)
break
else:
print(e)
我試着做:
else:`
continue
break
而且我還嘗試將整個腳本放入函數中,但是我沒有足夠的經驗來編寫函數中的類/函數。 在出現錯誤327的情況下,我想從頂部重新啟動腳本。非常感謝您的幫助!
這是整個腳本:
import time
retweeted_id = []
tweet_text = []
tweet_text_id = []
from TwitterSearch import TwitterSearchOrder, TwitterUserOrder, TwitterSearchException, TwitterSearch
try:
tso = TwitterSearchOrder()
tso.set_keywords([""])
tso.set_language('nl')
tso.set_include_entities(False)
tso.set_result_type('recent')
ts = TwitterSearch(
consumer_key = "aaaa",
consumer_secret = "bbbb",
access_token = "cccc",
access_token_secret = "dddd"
)
for retweeted in ts.search_tweets_iterable(tso):
tweet_text_id.append({retweeted['id'], retweeted['user']['screen_name'] })
retweeted_id.append(retweeted['id'])
print('done')
import tweepy
class TwitterAPI:
def __init__(self):
consumer_key = "aaaa"
consumer_secret = "bbbb"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
access_token = "cccc"
access_token_secret = "dddd"
auth.set_access_token(access_token, access_token_secret)
self.api = tweepy.API(auth)
def tweet(self, message):
self.api.update_status(status=message)
if __name__ == "__main__":
twitter = TwitterAPI()
for row in retweeted_id:
try:
print(row)
twitter.api.retweet(row)
time.sleep(180)
except tweepy.TweepError, e:
if e == "[{u'message': u'You have already retweeted this tweet.', u'code': 327}]":
print(e)
break
elif e == "[{u'message': u'Rate limit exceeded', u'code': 88}]":
print(e)
time.sleep(60*5)
elif e == "[{u'message': u'User is over daily status update limit.', u'code': 185}]":
print(e)
break
except TwitterSearchException as e:
print(e)
如果我正確理解您想要的內容,則以這種方式進行重組可能是最簡單的答案(最好是避免使用全局變量)。
<imports>
<globals from init>
def init():
<your init stuff>
class TwitterAPI:
<...>
def twit():
twitter = TwitterAPI()
for row in retweeted_id:
<rest of loop>
def main():
init();
while (True):
try:
twit();
except TwitterSearchException as e:
print(e)
if __name__ == "__main__":
main();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.