在glob迭代中忽略大小写的方法

8 投票
3 回答
5154 浏览
提问于 2025-04-17 12:33

有没有更简单的方法来遍历 xls 文件,不管文件名的大小写?

for file in [glob.glob(os.path.join(dir, '*.xls')), glob.glob(os.path.join(dir, '*.XLS'))]:

3 个回答

0

这里可以用一种脚本语言来帮忙。比如在Ruby语言中,如果你想查看所有包含“gem”的文件名,而且不区分大小写,可以用下面的代码:

ruby -e 'puts Dir["*"].grep /gem/i'

这段代码可以进一步整理成一个脚本,这样你就可以输入不同的搜索关键词和文件夹路径来使用了:

#!/usr/bin/env ruby
# lsi - ls case insensitive

mask = /#{ARGV[0]}/i
dir = ARGV[1] || '.'
puts Dir[File.join(dir, '*')].grep(mask)
3

你可以不使用 glob,手动进行匹配:

for file in os.listdir(dir):
    if not file.lower().endswith('.xls'):
        continue
    ...
16

glob和它背后的fnmatch没有不区分大小写的选项,但你可以使用方括号来实现这个功能:

for file in glob.iglob(os.path.join(dir, '*.[xX][lL][sS]')):

撰写回答