1. ホーム
  2. python

[解決済み] syntaxError: 'continue' がループ内で適切に使用されていない。

2022-02-02 16:36:53

質問

このエラーでしばらく悩んでいるのですが、なぜインタプリタが'continue'で文句を言うのかについては、さまざまな意見があるようです。そこで、以下に誤りのあるコードを提示したいと思います。

import tweepy
import time
def writeHandlesToFile():
    file = open("dataFile.txt","w")
    try:
        list = tweepy.Cursor(tweepy.api.followers,screen_name='someHandle',).items(100000)
        print "cursor executed"
        for item in list:
            file.write(item.screen_name+"\n")
    except tweepy.error.TweepError as e:
        print "In the except method"
        print e
        time.sleep(3600)
        continue

最後にcontinueを入れることにこだわったのは、プログラムの状態を保持するために、スリープの後にプログラムの実行を先頭から再開させたいからです。twitterのapiのレート制限を守るためにスリープが必要なのですが、apiは1時間に一定の数のリクエストしかできないようになっています。 私の間違いにお気づきの方は、ご指摘いただくか、continue文を使用しない代替の実装をご提供くださいますようお願いいたします。

ちなみに、他の投稿で提案されたように、タブとスペースは混在させていません。 よろしくお願いします。

解決方法を教えてください。

continue の中でしか使用できません。 for または while をループさせます。有効なリクエストがあるまでループするように、関数を簡単に再構築することができます。

def writeHandlesToFile():
    while True:
        with open("dataFile.txt","w") as f:
            try:
                lst = tweepy.Cursor(tweepy.api.followers,screen_name='someHandle',).items(100000)
                print "cursor executed"
                for item in lst:
                    f.write(item.screen_name+"\n")
                break
            except tweepy.error.TweepError as e:
                print "In the except method"
                print e
                time.sleep(3600)