给定后缀和目录路径,我需要提取目录中以给定后缀结尾的文件的完整路径。
目前,我这样做:
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
检查后缀,但我不确定它的语法是什么。
是否有其他方法可以实现文件完整路径的相同过滤列表?
答案 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()