【问题标题】:Why do glob.glob and pathlib.Path.glob treat hidden files differently?为什么 glob.glob 和 pathlib.Path.glob 对待隐藏文件的方式不同?
【发布时间】:2018-09-26 12:11:53
【问题描述】:

考虑这个文件夹包含两个文件:

test/
    foo
    .bar

在此文件夹上调用 glob.glob('*') 不会列出隐藏的 .bar 文件:

>>> glob.glob('test/*')
['test/foo']

但是pathlib.Path.glob('*') 会:

>>> list(Path('test').glob('*'))
[PosixPath('test/.bar'), PosixPath('test/foo')]

我想知道这是有意为之还是可能是错误/疏忽。


glob module documentation 声明以点开头的文件是特殊大小写的:

glob 将以点 (.) 开头的文件名视为特殊情况

意思是glob.glob('*')给出的结果是有意的。但是 pathlib 的 glob 呢?我在文档中找不到任何相关信息。这是预期的行为吗?两个函数不应该产生相同的结果吗?

【问题讨论】:

  • 那里的讨论很好地解释了为什么返回点文件,但没有解释与 glob.glob() 的不一致 - 你可以把它归结为历史。
  • @vaultah 哦,很好的发现。我可以说服您将其发布为答案,以便您接受我的投票吗?
  • 你肯定不容易受贿。如果我在你的答案旁边加上一个绿色的复选标记怎么办? :P

标签: python glob hidden-files


【解决方案1】:

根据官方错误跟踪器上的issue #26096,这种差异已被视为not a bug,因此完全是有意的。

感谢@vaultah 的发现。

【讨论】:

    猜你喜欢
    • 2022-10-19
    • 2013-01-12
    • 2014-08-23
    • 1970-01-01
    • 2021-07-23
    • 2023-03-22
    • 2014-08-28
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多