简洁的方法来匹配以Python中某些扩展名结尾的文件名?

时间:2013-02-08 14:53:11

标签: python regex filesystems glob

用于检索以特定扩展名结尾的目录中的所有文件的规范方法是什么,例如“所有以.ext.ext2结尾的文件都以不区分大小写的方式结束?”一种方法是使用os.listdirre模块:

import re
files = os.listdir(mydir)
# match in case-insensitive way all files that end in '.ext' or '.ext2'
p = re.compile(".ext(2)?$", re.IGNORECASE)
matching_files = [os.path.join(mydir, f) for f in files if p.search(x) is not None]

是否有一种首选方法可以更简洁地使用globfnmatch执行此操作?使用listdir的烦恼是,必须始终通过将os.path.join目录添加到它返回的每个文件的基本名称来处理路径。

1 个答案:

答案 0 :(得分:3)

怎么样:

>>> import glob
>>> glob.glob("testdir/*")
['testdir/a.txt', 'testdir/b.txt', 'testdir/d.ext', 'testdir/c.ExT2']
>>> [f for f in glob.glob("testdir/*") if f.lower().endswith((".ext", ".ext2"))]
['testdir/d.ext', 'testdir/c.ExT2']