apache ant文件集和globs的实现

formic的Python项目详细描述


功能

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中内置了对简单glob的支持,但是formic:

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

快速启动

formic可以通过简易安装或pip从cheeseshop安装:

$ easy_install formic

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

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

这将搜索当前目录下的所有python文件 排除所有名为 单词“test”,以及任何开始test的文件。

或者直接集成到Python2.7项目中:

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

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

就这样:)

关于

formic由Andrew Alcock编写和维护 新加坡Aviser LLP的。

Formic版权所有(c)2012,Aviser LLP,发布于 GPLv3。Aviser LLP很乐意 讨论其他许可安排;有关详细信息,请发送电子邮件给维护人员。

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

推荐PyPI第三方库


热门话题
java ArrayList<String>对象指向null。为什么?   java如何在tomcat中设置自定义环境变量?   java为什么使用树结构来支持搜索?   java静态和非静态方法之间的区别   JavaSpring集成聚合和转换   java如何在CSS中使用背景图像?   Android v1p1beta1语音java。lang.NoSuchMethodError:没有静态方法decodeBase64   java XStream在加载和保存时损坏值   swing Java绘图程序   java当我们只能访问接口时,有可能访问接口实现方法吗?   从Java对象获取JSON路径   java连接。getMetaData似乎不返回表信息   java是否可以将单个Spring数据源与多个TransactionManager一起使用?   java graph使用我访问的节点查找到原点的最短路径