2

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

代码:

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

如果不存在 .txt 文件,我会得到:

回溯(最近一次通话最后):

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

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

停止迭代

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

4

1 回答 1

4

由于是一个生成器,它会在所有匹配文件都用完后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 或更高版本。)

于 2012-04-06T16:34:45.007 回答