Apache Ant FileSet 和 Globs 的实现
项目描述
特性
Formic 是 Apache Ant FileSet 和 Globs 的 Python 实现,包括目录通配符 **。
FileSet 提供了一种简洁的方式来指定一组文件,而无需枚举单个文件。
包括 从一个或多个 Ant Globs 中获取的文件,然后
可选地 排除 与进一步 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 在 fnmatcher 和 glob 中内置了对简单 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。