簡體   English   中英

Python:異常后繼續循環

[英]Python: Continue looping after exception

我有以下腳本(下面)。 這將返回URL的狀態代碼。 它遍歷文件並嘗試連接到每個主機。 唯一的問題是它在到達異常時顯然會停止循環。

我已經嘗試了很多東西來把它如何循環,但無濟於事。 有什么想法嗎?

import urllib
import sys
import time

hostsFile = "webHosts.txt"


try:
    f = file(hostsFile)
    while True:
        line = f.readline().strip()
        epoch = time.time()
        epoch = str(epoch)
        if len(line) == 0:
            break
        conn = urllib.urlopen(line)
        print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n"
except IOError:
    epoch = time.time()
    epoch = str(epoch)
    print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n"
    sys.exit()
else:
    f.close()

編輯:

我是在平均時間提出這個,有什么問題嗎? (我還在學習:p)......

f = file(hostsFile)
while True:
    line = f.readline().strip()
    epoch = time.time()
    epoch = str(epoch)
    if len(line) == 0:
        break
    try:
        conn = urllib.urlopen(line)
        print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n"
    except IOError:
        print epoch + "connection unsuccessful"

謝謝,

MHibbin

您可以處理引發它的異常。 此外,在打開文件時使用上下文管理器,它可以實現更簡單的代碼。

with open(hostsFile, 'r') as f:
    for line in f:
        line = line.strip()
        if not line:
            continue

        epoch = str(time.time())

        try:
            conn = urllib.urlopen(line)
            print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n"
        except IOError:
            print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n"

你需要處理urllib.urlopen(line)引發的異常,就像這樣。

try:
    f = file(hostsFile)
    while True:
        line = f.readline().strip()
        epoch = time.time()
        epoch = str(epoch)
        if len(line) == 0:
            break
        try:
           conn = urllib.urlopen(line)
        except IOError:
           print "Exception occured"
           pass
except IOError:
    epoch = time.time()
    epoch = str(epoch)
    print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n"
    sys.exit()
else:
    f.close()

您可以嘗試在while循環中捕獲異常,就像這樣。

try:
    f = file(hostsFile)
    while True:
        line = f.readline().strip()
        epoch = time.time()
        epoch = str(epoch)
        if len(line) == 0:
            break
        try:
            conn = urllib.urlopen(line)
            print epoch + ": Connection successful, status code for " + line + " is " + str(conn.code) + "\n"
        except:
            epoch = time.time()
            epoch = str(epoch)
            print epoch + ": Connection unsuccessful, unable to connect to server, potential routing issues\n"
except IOError:
    pass
else:
    f.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM