Python кроме того, что блок не запущен - PullRequest
1 голос
/ 04 августа 2020

Моя цель - ретвитнуть и добавить в избранное самый первый твит на временной шкале пользователя. Если самый первый твит не был ретвитирован или не был добавлен в избранное, он ретвитит твит и избранное, в противном случае перейдя в блок except, напечатайте «уже ретвитнули» и спите в течение 5 минут.

Вот мой code:

for i in iter(int, 1):

for tweet in tweepy.Cursor(api.user_timeline, screen_name='realdonaldtrump', include_rts=False, exclude_replies=True).items(1): 
    try:
        print('\nTweet by: @' + tweet.user.screen_name) 

        if not tweet.retweeted:
                    tweet.retweet() 
                    print('Retweeted the tweet')
        if not tweet.favorited:
                    tweet.favorite() 
                    print('Favorited the tweet')
        sleep(60)

    except:
        print('Already retweeted and favorited please be patient till next tweet')
        sleep(300)

Но здесь скрипт никогда не переходит в блок except, если твит уже ретвитирован. Не знаю почему. Пожалуйста, объясните, как решить эту проблему.

except:
            print('Already retweeted and favorited please be patient till next tweet')
            sleep(300)

Мои журналы:

2020-08-04T16:06:14.608937+00:00 app[worker.1]: Tweet by: @realDonaldTrump
2020-08-04T16:06:14.785120+00:00 app[worker.1]: Retweeted the tweet
2020-08-04T16:06:15.013208+00:00 app[worker.1]: Favorited the tweet
2020-08-04T16:07:15.566250+00:00 app[worker.1]: Tweet by: @realDonaldTrump
2020-08-04T16:08:15.822568+00:00 app[worker.1]: 
2020-08-04T16:08:15.822615+00:00 app[worker.1]: Tweet by: @realDonaldTrump
2020-08-04T16:09:16.229441+00:00 app[worker.1]: 
2020-08-04T16:09:16.229453+00:00 app[worker.1]: Tweet by: @realDonaldTrump

Любая помощь будет принята с благодарностью и заранее благодарим.

1 Ответ

1 голос
/ 04 августа 2020

Блок except запускается, только если блок try возвращает ошибку. Если код except никогда не запускался, это означает, что нет ошибки, которую можно было бы поймать из try. Если вы удалите перехват ошибок try/except, вы, вероятно, обнаружите, что это не ошибка, поэтому код except никогда не запускается.

Попробуйте этот код

for tweet in tweepy.Cursor(api.user_timeline, screen_name='realdonaldtrump', include_rts=False, exclude_replies=True).items(1): 
    print('\nTweet by: @' + tweet.user.screen_name) 

    if not tweet.retweeted or not tweet.favorited:
        tweet.retweet() 
        print('Retweeted the tweet')

        tweet.favorite() 
        print('Favorited the tweet')
    else:
        print('Already retweeted and favorited please be patient till next tweet')
        sleep(300)

    sleep(60)

    
...