跳转至

11. 如何列出一个文件夹下的所有文件

问题

我怎么才能列出一个文件夹下的所有文件,并把它们添加到一个列表中。链接

回答一

os.listdir()能够得到文件夹中的所有内容,包括文件和文件夹。

如果你只想要文件,你可以用os.path过滤出来。

from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]

或者你可以使用os.walk,他将yield2个列表对于访问到的每个目录。为你拆分成文件和文件夹2个目录。如果你只需要顶层目录,你可以在第一次yield的时候break

from os import walk

f = []
for (dirpath, dirnames, filenames) in walk(mypath):
    f.extend(filenames)
    break

最后,正如例子所示,添加一个列表到另一个当中,可以使用 .extend或者

>>> q = [1, 2, 3]
>>> w = [4, 5, 6]
>>> q = q + w
>>> q
[1, 2, 3, 4, 5, 6]

个人更倾向使用.extend

回答二

我更倾向于使用 glob模块,它可以模式匹配。

import glob
print(glob.glob("/home/adam/*.txt"))

它将返回查询到的列表

['/home/adam/file1.txt', '/home/adam/file2.txt', .... ]