过滤目录和连接目录路径中的文件的方法 - Python

时间:2016-10-06 07:00:42

标签: python operating-system filepath glob listdir

给定后缀和目录路径,我需要提取目录中以给定后缀结尾的文件的完整路径。

目前,我这样做:

import os
dir_path = '/path/to/dir'
suffix = '.xyz'
filenames = filter(lambda x: x.endswith(suffix), os.listdir(dir_path))
filenames = map(lambda x: os.path.join(dir_path, x), filenames)

我也可以使用glob

import glob
dir_path = '/path/to/dir'
suffix = '.xyz'
glob.glob(dir_path+'*.'+suffix)

我知道还有pathlib可以使用PurePath检查后缀,但我不确定它的语法是什么。

是否有其他方法可以实现文件完整路径的相同过滤列表?

1 个答案:

答案 0 :(得分:2)

您可以使用list comprehension一次性构建结果:

winscp.exe /console

如果>>> [os.path.join(os.sep, x, dir_path) for x in os.listdir(dir_path) if x.endswith(suffix)] ['/home/msvalkon/foo.txt', '/home/msvalkon/output.txt', '/home/msvalkon/remaining_warnings.txt', '/home/msvalkon/test.txt', '/home/msvalkon/hdr_chksum_failure.txt'] 始终是绝对路径,则可以使用dir_path代替os.path.abspath(x)

对于大型目录,使用返回迭代器的os.scandir可能是明智的。这会更快。

os.path.join()