我正在尝试使用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/