2013-06-27 40 views
0

我有一個try語句,粗略地遵循這樣的事情。什麼是可以接受的python試語句

for result in results['matches']: 
    try: 
     #runs some functions 
    except KeyboardInterrupt: 
     leaveopt = raw_input('Would you like to exit or skip the current match? [e/s]:') 
     if leaveopt == 'e': 
      print '\nExiting...' 
     else: 
      print '\nSkipping match...' 

當我運行程序我沒有得到任何錯誤,但是當我按Ctrl-C,它只是跳過當前的匹配,而不是問我想怎麼辦。我想知道是否只有一些內容可以在try語句的except部分中運行,或者如果有另一個問題。

+1

在'try'裏面有你的函數有catch塊嗎?他們可能會盲目捕捉任何異常。 –

+0

沒有捕捉塊。大多數只是打印到一個文件,其他人只是運行nmap –

+0

我試着在'try'(http://pastebin.com/UDNBBYLG)中使用無限循環和'print'語句來運行你的代碼,它按預期工作。我認爲問題在於你遺漏的東西。 –

回答

1

就我所知(即使有一些你可能想避免的事情),你可以在except中做什麼沒有限制,這對我有用(python 2.7.3/linux mint) :

import time 

for x in xrange(5000): 
    try: 
     print x 
     time.sleep(5) 
    except KeyboardInterrupt, e: 
     leaveopt = raw_input( 
      'Would you like to exit or skip the current match? [e/s]:' 
      ) 
     if leaveopt == 'e': 
      print '\nExiting...' 
      break 
     else: 
      print '\nSkipping match...' 
      continue 

問題顯然是在「運行某些功能」部分的某個地方。