Python请求异常超时

时间:2014-08-12 06:53:04

标签: python exception error-handling timeout

我写了一个像这样的python脚本:

#!/usr/bin/python
import sys
import requests

if len(sys.argv) != 2:
        print "Usage: python %s <IP-LIST>" % (sys.argv[0])
        sys.exit();

InputFile = sys.argv[1]
try:
    File = open(InputFile)
    for ip in File:
        IP = ip.rstrip()
        out = requests.get("http://" + IP, timeout=5)
        out.status_code

except (KeyboardInterrupt, SystemExit):
    print "\nKeyboardInterruption with Ctrl+c signal"
except IOError as e:
    print "The file \"%s\" does not exist!" % (sys.argv[1])

当网址无响应时,我会看到以下输出:

The file "list.txt" does not exist!

为什么呢?

1 个答案:

答案 0 :(得分:2)

requests使用子类IOError的异常,您正在捕获它并假设找不到文件。如果您使用的是Python 3,则可以捕获更具体的FileNotFoundError。在这里,您应该在except requests.RequestException块上方放置except IOError (如果需要,可以将其分解为特定的requests错误。