在bot.polling功能可按一个try-except块,不运行代码

问题描述:

在我的Python代码的其余部分,轮询功能处于try-except块在bot.polling功能可按一个try-except块,不运行代码

bot = telebot.TeleBot(TOKEN) 

while True: 
    try:  
     status = "Conected" 
     bot.polling(none_stop=False, interval=1) 

    except: 
     status = "failure" 

    print status 
    #do something.. 
    time.sleep(1) 

但当bot.polling执行,该脚本从不打印状态并且不运行代码的其余部分。

我尝试添加“block = True”bot.polling(none_stop=False, interval=1, block=True),但在这种情况下,轮询不会收到电报消息。

道歉,我的最后一个答案并不像以前那么清楚。

所以,当使用try /除了你会想确认你在While和Try:和Except下面有缩进(和Else,最后如果你也使用它们)。

接下来,您想要查找的操作在尝试或除了之外进行。所以,这是我会做的:

这将运行,并不断循环每秒一次。如果循环的状态成功,它将显示连接,否则它会打印“失败”,然后在一秒钟后再次尝试循环。如果它返回一个错误,它将打印它有错误。但是,如果遇到错误,它会循环回到True:loop的顶部。这就是为什么你没有得到一个打印,因为除了指令不包括打印。一旦发生异常,您的代码将返回顶部并再次尝试。

while True: 
    try:  
     status = "Connected" 
     bot.polling(none_stop=False, interval=1) 
     pass  

    except: 
     status = "failure" 
     print status 

    else: 
     print status 


    #do something.. 
    time.sleep(1) 

本教程对于启动和运行这些try catch循环非常有帮助。

https://docs.python.org/2/tutorial/errors.html

这里有一个尝试的例子,除了我使用效果:

token = 0 
while token == 0: 
    print("Welcome to the back office.\nYou will need to log in to contine.") 
    sleep(1) 
    print("="*5 + " Please log in " +"="*5) 
    print(" ") 
    email = raw_input("Email: ") 
    print(" ") 
    password = getpass.getpass("Password: ") 
    authpayload = "grant_type=password&username=" + email + "&password=" + password 
    login = requests.post(url+'/token', data=authpayload) #testing 
    token = login.json() 
    try: 
     token = token["access_token"] 
     pass 
    except: 
     print(" ") 
     print("="*5 + " ERROR " +"="*5) 
     print(token) 
     print("Sorry please try logging in again.") 
     logging.info("user login failed " + str(token)) 
     logging.info("user tried email: " + email) 
     token = 0 
     sleep(1) 
    else: 
     print(" ") 
     print("="*5 + " You're now logged in " +"="*5) 
     print(" ") 
     logging.info("user login succeeded") 
     logging.info("user email: " + email) 
     sleep(.5) 
     pass 

就我而言,我是“尝试”荷兰国际集团,看看JSON响应与该对象关键“access_token”如果不是,那么我知道出了问题,我不让用户继续。然后将它们发送回顶端,因为在除了区域之外,我确保令牌被设置为0.意味着此循环将运行,直到我的程序收到访问令牌的值。

我真的希望这有助于!如果它解决了你的问题,请接受它!

+0

你能解释一下吗? – Nivek

+0

@Nivek我已经更新了我的答案,以便更详细地给出一个资源来协助try/except/else。希望这是更多你正在寻找。 – beerandsmiles

+0

@Nivek再次更新了我在其中一个脚本中使用的Try Except Else循环的示例。 – beerandsmiles