如何列出目录的所有文件?
如何在Python中列出目录的所有文件并将它们添加到?list
os.listdir()
返回目录中的所有内容 -- 包括文件和目录。
os.path's
只能用于列出文件:isfile()
from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
或者,os.walk()
为它访问的每个目录生成两个列表 - 一个用于文件,一个用于 dirs。如果你只想要顶级目录,你可以在第一次产生它时打破它:
from os import walk
f = []
for (dirpath, dirnames, filenames) in walk(mypath):
f.extend(filenames)
break
或者更短:
from os import walk
filenames = next(walk(mypath), (None, None, []))[2] # [] if no file
我更喜欢使用glob
模块,因为它可以进行模式匹配和扩展。
import glob
print(glob.glob("/home/adam/*"))
它直观地进行模式匹配
import glob
# All files and directories ending with .txt and that don't begin with a dot:
print(glob.glob("/home/adam/*.txt"))
# All files and directories ending with .txt with depth of 2 folders, ignoring names beginning with a dot:
print(glob.glob("/home/adam/*/*.txt"))
它将返回一个列表,其中包含查询的文件和目录:
['/home/adam/file1.txt', '/home/adam/file2.txt', .... ]
请注意,忽略以点开头的文件和目录,因为它们被视为隐藏文件和目录,除非模式类似于 。glob
.
.*
使用 glob.escape
来转义那些不是模式的字符串:
print(glob.glob(glob.escape(directory_name) + "/*.txt"))