跳转到主要内容

Apache Ant FileSet 和 Globs 的实现

项目描述

特性

Formic 是 Apache Ant FileSet 和 Globs 的 Python 实现,包括目录通配符 **

FileSet 提供了一种简洁的方式来指定一组文件,而无需枚举单个文件。

  1. 包括 从一个或多个 Ant Globs 中获取的文件,然后

  2. 可选地 排除 与进一步 Ant Globs 匹配的文件。

Ant Globs 是普通文件系统 globs 的超集。主要区别在于

  • 它们匹配整个路径,例如 /root/myapp/*.py

  • ** 匹配 任何 目录或 目录,例如 /root/**/*.py 匹配 /root/one/two/my.py

  • 您可以匹配最顶层的目录或目录,例如 /root/**,或者

  • 文件的父目录,例如 **/parent/*.py,或者

  • 任何父目录,例如 **/test/**/*.py

这种方法在许多其他语言和工具中是事实上的标准,包括 Apache Ant 和 Maven、Ruby (Dir) 和 Perforce (…)

Python 在 fnmatcherglob 中内置了对简单 globs 的支持,但 Formic

  • 可以递归地扫描子目录

  • 匹配路径中的任意目录(例如 /1/**/2/**/3/**/*.py)。

  • 具有高级接口

    • 指定一个或多个glob来查找文件

    • glob可以用来排除文件

    • Ant和Formic有一组默认排除项。这些是默认情况下自动排除在所有搜索之外的文件和目录。其中大多数与VCS(例如.svn目录)相关。Formic增加了__pycache__

    • 遍历子树中的所有匹配项

  • 对于许多常见模式更高效;它在大型目录树中运行得相对更快,其中包含大量文件。

快速入门

Formic可以使用pip安装

$ pip install formic-py3

安装后,您可以从命令行使用Formic

$ formic -i "*.py" -e "__init__.py" "**/*test*/" "test_*"

这将搜索当前目录下的所有Python文件,排除所有__init__.py文件,任何名称包含“test”的目录中的文件,以及任何以test_开头的文件。

或者直接集成到您的Python项目中

import formic
fileset = formic.FileSet(include="**.py",
                         exclude=["**/*test*/**", "test_*"]
                         )

for file_name in fileset:
    # Do something with file_name
    ...

就这些了 :)

关于

Formic最初由新加坡Aviser LLP的Andrew Alcock编写。Scott Belden将其分支以添加python 3支持。

Formic版权所有(C)2012,Aviser LLP,并发布在GPLv3下。Formic-Py3版权所有(C)2017,Scott Belden。

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面