让Python代码在异常后继续执行。
让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
问题:在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循环内部,我们可以确保即使在处理其中一个文件时出现异常,整个程序仍然可以继续执行下一个文件的处理。这样可以提高代码的健壮性和稳定性。
问题的出现原因是当代码中出现错误时,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语句的作用。