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提供了一种简洁的方式来指定一组文件,而不必枚举单个文件。信息:

  1. 包含来自一个或多个ant globs的文件,然后
  2. 可选地排除与其他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在fnmatcherglob中内置了对简单globs的支持,但是formic:

  • 可以递归扫描子目录
  • 匹配路径中的任意目录(例如/1/**/2/**/3/**/*.py)。
  • 具有高级接口:
    • 指定一个或多个全局查找文件
    • globs可用于排除文件
    • ant和formic有一组default excludes。这些是文件和 默认情况下,自动从所有搜索中排除的目录。 其中大部分是与VCS相关的文件和目录(例如.svn 目录)。formic添加__pycache__
    • 遍历子树中的所有匹配项
  • 在许多常见模式下效率更高;在具有大量文件的大型目录树上运行速度相对更快。

关于

formic最初由新加坡Aviser LLPAndrew Alcock编写和维护。

但现在,我在github上进行了分叉,并将自愿长期维护这个项目。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么javaassist仅在项目中使用lambda时加载Entitymanager时抛出无效的常量类型:18   java如何识别用户是否在Alexa中首次启动技能?   java maven:如何防止插件更新   java StringBuilder将null追加为“null”   在java中,我可以在画布上绘制画布吗?   java如何在JRadioButton上垂直对齐文本和图像?   java“类是对象的集合”。这个定义是对的还是错的?   java如何用其他字符替换字符串中的1个或多个字符?   Java的HashSet<Double>及其子集的hashcode的唯一性   对象ArrayList的java并发修改错误   多线程Java线程:让EDT函数等待长时间运行的函数离开EDT   java如何重写方法,将一个实例变量和一个局部变量相加,从而生成一个数据类型为Double的新变量?