apache ant文件集和globs的实现
formic2的Python项目详细描述
[doc] | image:: https://readthedocs.org/projects/formic/badge/?version=latest :target: https://formic.readthedocs.io/ :alt: ReadTheDocs |
历史记录
formic从https://bitbucket.org/aviser/formic分叉。原来的项目只支持python2.7,长期没有维护。
我添加了python3支持并修复了一些问题。 formic现在可以在任何python 2.6+或python 3.4+系统上工作。如果没有,请file an issue。但没有在其他python版本上测试。
formic在python系统库之外没有运行时依赖项。
安装
formic可以从cheeseshop安装,安装简单:
$ easy_install formic2
或PIP:
$ pip install formic2
快速启动
安装后,您可以从命令行使用formic从当前目录中查找:
$ formic -i "*.py" -e "__init__.py" "**/*test*/" "test_*"
这将搜索当前目录下的所有python文件 排除所有名为 单词“test”,以及任何开始test的文件。
您还可以从如下指定的目录中找到:
$ formic /specified/directory/can/ignore/ -i "*.py" "**/test/**/*.txt" "*.ini"
formic的输出格式与unix find命令类似,因此可以很容易地与其他可执行文件组合,例如:
$ formic -i "**/*.bak" | xargs rm
将删除当前目录中或目录下的所有.bak文件(但不包括vcs目录,如.svn和.hg)。
formic也可以直接集成到python项目中:
import formic fileset = formic.FileSet(include="**.py", exclude=["**/*test*/**", "test_*"], directory="./", symlinks=False, ) for file_name in fileset: # Do something with file_name ...
formic在nt上总是不区分大小写,但在posix上可以区分大小写或不区分大小写。
在NT上:
$ formic ./test/ -i "upp*" "upp*/" /some/where/formic/test/lower/UPPER.txt /some/where/formic/test/UPPER/lower.txt /some/where/formic/test/UPPER/UPPER.txt
在不区分大小写的posix上:
$ formic ./test/ --insensitive -i "upp*" "upp*/" /some/where/formic/test/lower/UPPER.txt /some/where/formic/test/UPPER/lower.txt /some/where/formic/test/UPPER/UPPER.txt
区分大小写:
$ formic ./test/ -i "upp*" "upp*/" $
就这样:)
功能
formic是apache antFileSet and Globs的python实现,包括目录通配符**。
fileset提供了一种简洁的方式来指定一组文件,而不必枚举单个文件。信息:
- 包含来自一个或多个ant globs的文件,然后
- 可选地排除与其他ant globs匹配的文件。
ant globs是普通文件系统globs的超集。关键区别:
- 它们匹配整个路径,例如/root/myapp/*.py
- **匹配any目录或directories,例如/root/**/*.pymatches /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)。
- 具有高级接口:
- 指定一个或多个全局查找文件
- globs可用于排除文件
- ant和formic有一组default excludes。这些是文件和 默认情况下,自动从所有搜索中排除的目录。 其中大部分是与VCS相关的文件和目录(例如.svn 目录)。formic添加__pycache__。
- 遍历子树中的所有匹配项
- 在许多常见模式下效率更高;在具有大量文件的大型目录树上运行速度相对更快。