让Python代码在异常后继续执行。

14 浏览
0 Comments

让Python代码在异常后继续执行。

我正在尝试读取符合特定条件的文件夹中的所有文件。一旦出现异常,我的程序就会崩溃。我试图即使出现异常也要继续执行,但它仍然停止执行。以下是几秒钟后我得到的结果:\n

错误 

\n这是我的代码:\n

import os 
path = 'Y:\\Files\\'
listing = os.listdir(path)
try:
    for infile in listing:
        if infile.startswith("ABC"):
            fo = open(infile,"r")
            for line in fo:
                if line.startswith("REVIEW"):
                    print infile
            fo.close()
except:
    print "错误 "+str(IOError)
    pass

0
0 Comments

你的代码正在按照你告诉它的方式执行。当出现异常时,它会跳转到以下这部分代码:

except:
    print "error "+str(IOError)
    pass

由于此后没有其他代码,程序就会结束。

另外,这里的`pass`是多余的。

`pass`的意思是“什么也不做”。你的代码即使没有它也会继续执行。问题在于,在`except`块之后没有其他代码需要执行。

0
0 Comments

问题:在Python代码中遇到异常后,如何使代码继续执行?

原因:在上述代码中,try/except语句块位于for循环之外,因此当程序在打开文件时出现异常时,会中断整个程序的执行。

解决方法:将try/except语句块移至for循环内部,使得每次迭代都会捕获并处理异常,然后继续执行。

修改后的代码如下:

import os 
path = 'C:\\'
listing = os.listdir(path)
for infile in listing:
    try:    
        if infile.startswith("ABC"):
            fo = open(infile,"r")
            for line in fo:
                if line.startswith("REVIEW"):
                    print(infile)
            fo.close()
    except:
          print("error " + str(IOError))

通过将try/except语句块移动到for循环内部,我们可以确保即使在处理其中一个文件时出现异常,整个程序仍然可以继续执行下一个文件的处理。这样可以提高代码的健壮性和稳定性。

0
0 Comments

问题的出现原因是当代码中出现错误时,try/except结构没有被正确放置,导致程序中断了所有的循环。解决方法是将try/except结构放在更内部的位置。在第一个for循环之后添加try/except,这样如果出现错误,程序将会继续进行下一个文件的处理。

此外,建议在打开文件时使用with语句,这是一个更好的选择。当使用open()打开文件时,如果出现错误,文件将会一直保持打开状态。现在使用with语句,如果出现错误,文件会被自动关闭。

下面是修改后的代码示例:

for infile in listing:
    try:
        if infile.startswith("ABC"):
            with open(infile,"r") as fo:
                for line in fo:
                    if line.startswith("REVIEW"):
                        print(infile)
    except:
        pass

现在,如果捕获到错误,文件将会被关闭,这正是with语句的作用。

0