检索目录中以特定扩展名结尾的所有文件的规范方法是什么,例如“所有以.ext
或.ext2
结尾的文件都区分大小写吗?”一种方法是使用os.listdir
和re
模块:
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]
有没有一种首选的方法可以更简洁地使用
glob
或fnmatch
? listdir
的烦人之处在于,必须始终在路径前处理,方法是在目录前添加os.path.join
为其返回的每个文件的基本名称。 最佳答案
怎么样:
>>> 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']
关于python - 匹配以特定扩展名结尾的文件名的简洁方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14775204/