我正在编写一个脚本,该脚本必须处理由 Windows 和 Linux 用户手动修改的目录。 Windows 用户在分配文件名时往往根本不关心大小写。
有没有办法在 Python 的 Linux 端处理这个问题,即我可以获得不区分大小写的类似 glob 的行为吗?
原文由 andreas-h 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在编写一个脚本,该脚本必须处理由 Windows 和 Linux 用户手动修改的目录。 Windows 用户在分配文件名时往往根本不关心大小写。
有没有办法在 Python 的 Linux 端处理这个问题,即我可以获得不区分大小写的类似 glob 的行为吗?
原文由 andreas-h 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以将每个字母字符 c 替换为 [cC],通过
import glob
def insensitive_glob(pattern):
def either(c):
return '[%s%s]' % (c.lower(), c.upper()) if c.isalpha() else c
return glob.glob(''.join(map(either, pattern)))
原文由 Geoffrey Irving 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
使用不区分大小写的正则表达式而不是 glob 模式。
fnmatch.translate
从全局模式生成正则表达式,所以为您提供不区分大小写的 glob 模式版本作为已编译的 RE。
请记住,如果文件系统由类 Unix 文件系统上的 Linux 机器托管,用户将能够创建文件
foo
,Foo
和FOO
在同一目录中。