Python 除了块不 运行

Python except block not running

我的目标是转发和收藏用户时间轴上的第一条推文。如果第一条推文没有被转发或收藏,它会转发这条推文和收藏,否则转到 except 块并打印“已转发”并休眠 5 分钟。

这是我的代码:

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

如有任何帮助,我们将不胜感激,并在此先致谢。

except 块仅在 try 块 returns 出错时运行。如果 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)