我正在尝试使用iglob而不是glob来获取说.txt文件的列表。如果不存在.txt文件,则glob不会返回任何错误,而iglob会返回任何错误。

码:

def iGlobLatest():
    dir_list = glob.iglob('*.txt')
    print dir_list.next()


如果不存在.txt文件,我将得到以下信息:

追溯(最近一次通话):

在iGlobLatest()中,文件“ T:\ prod \ offlineValidation \ scripts \ goofin.py”第98行

文件“ T:\ prod \ offlineValidation \ scripts \ goofin.py”,第88行,在iGlobLatest中打印dir_list.next()

StopIteration

如果使用try / except,则可以避免该错误,但这是唯一的方法吗?其他检查.txt文件是否存在的建议涉及使用glob,但是由于我正在尝试使用iglob而不是glob...。

最佳答案

由于iglob()是生成器,因此在所有匹配文件都用完后会引发StopIteration。如果根本没有文件,它将在第一次调用StopIteration时引发next()

生成器旨在遍历:

for file in glob.iglob('*.txt'):
    # whatever


这样,StopIteration异常将为您隐式捕获。我不知道您实际上要做什么,但是也许这就是您想要的:

return next(dir_list, None)   # return first item of dir_list,
                              # or None if no files match


(Python 2.6或更高版本。)

关于python - 当搜索路径不存在时处理iglob错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10046257/

10-12 21:32