如何回调错误消息(python)

时间:2017-02-22 10:46:12

标签: python callback

我是一个体面的新python编码器,我希望创建一个Twitter机器人,每次转发时,它都会收到推文。我不确定如何做到这一点但是当机器人搜索时,它会发出“列表索引超出范围”的错误消息。

import tweepy, time, traceback
from tweepy.auth import OAuthHandler
from tweepy.streaming import StreamListener, Stream

ckey = ''
csecret = ''
atoken = ''
asecret = ''

auths = OAuthHandler(ckey, csecret)
auths.set_access_token(atoken, asecret)
api = tweepy.API(auths)

class listener(StreamListener):
    def on_data(self, raw_data):
        try:


tweet_text = raw_data.lower().split('"text":')[1].split('","source":"')[0].replace(",", "")
            screen_name = raw_data.lower().split('"screen_name":"')[1].split('","location"')[0].replace(",", "")
            tweet_cid = raw_data.split('"id:')[1].split('"id_str":')[0].replace(",", "")
#there is ment to be 4 spaces at tweet_text


accs = [''] # banned accounts screen name goes in here
            words = ['hate' , 'derp' , 'racist' , 'evil' , 'keemstar' , 'mario' , 'kirby'] #banned words goes in here

        if not any(acc in screen_name.lower() for acc in accs):
            if not any(word in tweet_text.lower() for word in words):
                fav(tweet_cid)
                follow(screen_name)
                retweet(tweet_cid)
                tweet(myinput)
                #call what u want to do here
                #fav(tweet_cid)
                #retweet(tweet_cid)
                return True
    except Exception as e:
        print (str(e)) # prints the error message, if you dont want it to comment it out.
        pass


def on_error(self, status_code):
    try:
        print( "error" + status_code)
    except Exception as e:
        print(str(e))
        pass


def retweet(tweet_cid):
        try:
            api.retweet(tweet_cid)
            time.sleep(random.randit(range(50,900))) 
        except Exception as e:
            print(str(e))
            pass

def follow(screen_name):
    try:
        api.create_friendship(screen_name)
        time.sleep(random.randit(range(50,900))) 
    except Exception as e:
            print(str(e))
            pass


def fav(tweet_cid):
        try:
            api.create_favourite(tweet_cid)
            time.sleep(random.randit(range(600,1100)))
        except Exception as e:
            print(str(e))
            pass

def unfav(tweet_cid):
        try:
            api.destroy_tweet(tweet_cid)
            time.sleep(random.randit(range(8000,9000)))
        except Exception as e:
            print(str(e))
            pass


def tweet(myinput):
        try:
            api.update_status(myinput)
            time.sleep(random.randit(range(1000,4000)))
        except Exception as e:
            print(str(e))
            pass



# tags below
track_words = [""] #deleted all tags so easier to read
follow_acc = [] # all username converted to user ids

try:
    twt = Stream(auths, listener())
    twt.filter(track=track_words, follow = follow_acc)
except Exception as e:
    print (str(e))
    pass

1 个答案:

答案 0 :(得分:0)

这是你要求的吗?它给出了异常的堆栈跟踪。

import traceback
try:
    s='hi'
    s=s+1
except Exception as e:
    print(traceback.format_exc())

输出:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

希望这有帮助! :)