在IBM developerWorks的上一篇文章中,我写了关于使用Python创建命令行工具的乐趣。 本文通过创建插件来扩展命令行工具,将命令行工具提升到了一个新的高度。 插件和命令行工具都提供了方便的方法来扩展现有代码的功能。 一起使用,它们可以成为非常强大的工具。
为了开始编写插件,您将使用我编写的名为pathtool的开源Python软件包,该软件包使用生成器遍历文件系统并产生文件对象。 专门编写该库是为了允许开发人员通过编写自己的对文件对象起作用的过滤器来扩展它,然后返回结果。
实际的Python模块代码比您希望看到的文章要大一些,因此,我将仅发布您将实际使用的API的摘要:
清单1. pathtool API
def path(fullpath, pattern="*", action=(lambda rec: print_rec(rec))):
"""This takes a path, a shell pattern, and an action callback
This function uses the slower pathattr function which calculates checksums
"""
for rec in pathattr(fullpath):
for new_record in match(pattern, rec): #applies filter
action(new_record) #Applies lambda callback to generator object
查看此示例,您可以知道path函数采用强制性的path-positional参数以及可选的pattern关键字参数和称为lambda回调的可选action关键字参数。 路径的默认回调仅打印出文件名作为示例。 开发人员只需要easy_install pathtool。 有关使用easy_install命令的信息,请参见参考资料部分 ,然后导入模块并按如下所示调用函数:
from pathtool import path
path("/tmp", pattern="*.mp3", action=(lambda rec: print_rec(rec)))
注意:为了方便起见,我在本文中包含了pathtool的