Python:选择目录中的第一个文件

时间:2015-07-24 14:40:59

标签: python file

我正在尝试处理目录中的某些文件,而不知道他们的名字,并逐个处理。 所以我使用os.listdir(path)列出文件。

所以我必须在每次调用函数时列出文件。问题是当有很多文件(如2000)时,列出每个文件需要花费很多时间,而我只想要第一个文件。

是否有任何解决方案可以在不列出每个文件的情况下获取名字?

谢谢:)

4 个答案:

答案 0 :(得分:9)

os.listdir(path)[0]

这比列出'更快。 (打印?)每个文件名,但它仍然必须将所有文件名加载到内存中。另外,哪个文件是第一个文件,你只想要第一个文件或者你想要的特定文件,因为这是不同的。

答案 1 :(得分:3)

如果您的目标是处理每个文件名,请使用os.walk()生成器:

Help on function walk in module os:

walk(top, topdown=True, onerror=None, followlinks=False)
    Directory tree generator.

答案 2 :(得分:2)

您似乎正在尝试整体处理文件,并且您将在某个时刻迭代所有文件。您不必每次输入函数时都调用该方法,为什么不使用全局参数,以便只加载一次列表?因此,例如,而不是:

import os
def foo(path):
    os.listdir(path)[0]
你有:

import os
fnames = os.listdir(path)
def foo(path):
    fnames[0]

答案 3 :(得分:0)

要获取第一个文件名而不必扫描整个目录,您必须使用 walk 函数获取生成器,然后您可以使用 next() 获取生成器的第一个值。

folder_walk = os.walk(path)
first_file_in_folder = next(folder_walk)[2][0]

print(first_file_in_folder)
# "firstFile.jpg"