Python pathlib 匹配功能不起作用

no *_*nek 5 python glob pathlib

pathlibmatch(pattern)被记录为将路径与提供的 glob 样式模式匹配,但它不起作用

>>> Path("w/x/y/z").mkdir(parents=True)
>>> list(Path().glob("w/**/z"))
[PosixPath('w/x/y/z')]
>>> Path("w/x/y/z").match("w/**/z")
False
Run Code Online (Sandbox Code Playgroud)

那不应该返回 true 吗?

myz*_*540 0

的 glob 模式**不经过路径分隔符。至少该path.match()功能还没有实现。也许尝试一下path.rglob()递归通配符。

尝试:

In [1]: from pathlib import Path

In [2]: p = Path("w/z/y/z")

In [3]: p.mkdir(parents=True)

In [5]: p.match("w/*/*/z")
Out[5]: True
Run Code Online (Sandbox Code Playgroud)

  • 那么你为什么认为 `Path("w/x/y/z").match("w/**/z")` 不应该返回 True?它与 glob 模式匹配,不是吗? (3认同)
  • `Path.match` 用于根据模式检查_string_。`Path.rglob` 用于在文件系统上查找与模式匹配的文件。这些是完全不同的事情,对于使用匹配,您甚至可能根本没有可用的文件系统,例如从 csv 文件或数据库获取的处理路径。 (2认同)