2016-01-31 77 views
1

所以我想抓住Python中的目录下的第一个文件。我知道我可以这样做:Python:如何获取目录中的第一个文件?

first_file = [join(path, f) for f in os.listdir(path) if isfile(join(path, f))][0] 

但它很慢。有没有更好的解决方案?谢谢!

+0

谢谢@gtlambert。确实很快。我正要编辑它:P – tnq177

回答

3

您可以使用next()

first_file = next(join(path, f) for f in os.listdir(path) if isfile(join(path, f))) 

注意,如果在目录中没有文件,它会抛出异常StopIteration。要么处理它,要么提供默认值

first_file = next((join(path, f) for f in os.listdir(path) if isfile(join(path, f))), 
        "default value here") 
+1

哦,上面的'''next''里面的代码是否会生成一个迭代器? – tnq177

+1

@ tnq177,在这种情况下'next()'会得到第一个迭代器的值,或者抛出'StopIteration'异常。 – alecxe

+0

酷!非常感谢,伙伴。我刚刚测试并看到了结果。它的速度更快。我不知道上面的语法生成一个迭代器。那么我们在列表理解中基本上是将一个迭代器转换成一个列表? PS:我必须再等7分钟才能接受你的答案。 – tnq177

相关问题