【发布时间】:2021-07-14 04:41:06
【问题描述】:
我已经有了一些线索,但由于我无法在任何地方找到清晰简洁的答案,我认为它可能也会对其他人有所帮助。
Python中有两个模块做文件名匹配,分别是fnmatch和glob。
除其他外,两者之间的区别之一是 fnmatch 不会将以句点开头的文件名视为隐藏文件名。然而,它们似乎仍然执行相对相似的任务,这让我想知道为什么它们被拆分为两个独立的模块,而不是一个具有组合功能的模块。
这种分裂是否有充分的理由,或者仅仅是因为 Python 的历史原因?
【问题讨论】:
-
我自己不是很熟悉,但根据this answer,
glob将路径分成目录和文件名后,它在内部继续使用fnmatch分析每个部分。 -
fnmatch()仅将一个文件与模式匹配并返回一个布尔值。glob.glob()返回所有匹配文件的列表。 -
fnmatch 独立于任何文件系统 - 例如,您可以将它与来自数据库的文件名列表一起使用。注意
glob实际上使用fnmatch。