Pathlib.rglob()函数中的负模式

时间:2019-03-28 17:03:00

标签: python-3.6 pathlib

我需要在除__init__.py之外的文件夹中找到所有python文件 我的第一次尝试是

import re
search_path.rglob(re.compile("(?!__init__).*.py"))

此类代码失败,所以我最终得到:

filter(
  lambda path: '__init__.py' != path.name and path.name.endswith('.py') and path.is_file(), search_path.rglob("*.py")
)

看起来像rglob不支持python正则表达式。

  • 为什么?
  • rglob支持否定模式吗?
  • 这段代码可以更优雅吗?

2 个答案:

答案 0 :(得分:0)

我也非常需要这样的东西。我想到了这个:

amount.match(/^\d{1,}(\.\d{0,2})?$/)

答案 1 :(得分:0)

或者,您可以使用fnmatch

import pathlib
import fnmatch

search_path = pathlib.Path.cwd() / "test_folder"
for file in search_path.rglob("./*.py"):
    if not fnmatch.fnmatch(file.name, "__init__.py"):
        print(f"{file}")