Cmdlet提供类似管道的机制来级联函数和生成器。

cmdlet的Python项目详细描述


什么是Cmdlet?

Cmdlet提供类似管道的机制来级联函数和生成器。 它使用符号( )将函数转换为管道对象并进行级联 他们。这个命令序列可以在以后执行和计算。 就像unix shell中的管道机制一样。例如:

fromcmdlet.cmdsimport*# Create piped commands.cmds=range(10)|pipe.filter(lambdax:x>5)|format('item#%d')# Execute commands and return the last processed data.run(cmds)# >>> 'item#9'# Execute commands and return processed data in a list.result(cmds)# >>> ['item#6', 'item#7', 'item#8', 'item#9']# Execute commands and return iterator for processed data.fordataincmds:printdata# >>> item#6# >>> item#7# >>> item#8# >>> item#9

首先,我们创建了命令,并使用 来级联它们。然后,我们可以 通过run()、result()或迭代器执行命令。

Cmdlet可以自动将相应的类型转换为管道对象。在 上面的示例中,range(10)是迭代器,而不是管道对象。因为秒 item是一个管道对象(由pipe.filter生成),它的第一个项是 自动转换为管道对象。

Cmdlet.Cmds模块中有许多有用的实用工具。他们可以提供 建造有用的管道非常方便。下面是一个示例:

fromcmdlet.cmdsimport*query_topic='find ./mydoc -name "*.txt" -print'|readline(end=10)|match(r'^[tT]opic:\s*(?P<topic>.+)\s*',to=dict)|values('topic')fortopicinquery_topic:printtopic

在上面的例子中,目标是从文章文件中查询主题。到 实现目标,我们必须:

  1. 搜索给定文件夹中的文本文件。
  2. 从每个文件中读取前10行。
  3. 找到与"topic:foo bar"模式匹配的行。
  4. 提取主题字符串。

使用 cmdlet.cmds 提供的实用程序,我们只需要编写 代码很少。以"find"开头的第一个字符串是一个普通shell 脚本。它自动转换为 sh 管道,并使用 系统外壳。readline管道可以打开从 嘘嘘声。 匹配管道和管道值一起提取主题 从文件内容。

上面的示例不仅显示了小代码,而且还显示了可读性。它的 很容易理解源代码的用途。

注意:>;使用Cmdlet的管道机制时,请确保其中一个>; 前两个管道项是有效的管道对象。

使用cmdlet还有一个优点。对管道对象求值 调用result、run或iter时。这意味着你可以重用它们。让我们 修改前面的示例。

fromcmdlet.cmdsimport*# Separate from query_topic command.extract_topic=readline(end=10)|match(r'^[tT]opic:\s*(?P<topic>.+)\s*',to=dict)|values('topic')fortopicin('find ./mydoc1 -name "*.txt" -print'|extract_topic):printtopicfortopicin('find ../mydoc2 -name "*.md" -print'|extract_topic):printtopic

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

推荐PyPI第三方库


热门话题
java使用DAO,DTO模式作为MVC   java获取用于Android开发的图像   java Android Studio txt文件中的文件计数   任何类型泛型构造的枚举的java类   java为我的应用程序上的每个用户创建一个图表   算法如何在java中进行递归搜索?   java如何从MongoRepository/QueryDSL中获取不同的字段?   java如何获取JCheckbox的选定索引?   java嵌套。属性文件   Java如何发现两个数组是否彼此重复?   java Spring启动应用程序,带有raspberry pi上的Jython   RMI需要java。rmi。服务器NAT的主机名,那么像CORBA这样的其他技术如何解决NAT问题呢?   java If语句总是给出相同的答案   x到y的幂的java递归方法   使用ApacheCamel对USPSAPI进行地址验证的java HTTP查询   java很难定义与ArrayList交互的方法   java如何将HttpServletRequest转换为原始请求字符串?