Skip to main content

35.10. pipes — shell管道接口

源代码: Lib/pipes.py


pipes 模块定义了一个类来抽象 pipeline 的概念 - 一个从一个文件到另一个文件的转换器序列。

由于模块使用 /bin/sh 命令行,因此需要用于 os.system()os.popen() 的POSIX或兼容shell。

pipes 模块定义了以下类:

class pipes.Template

管道的抽象。

例:

>>> import pipes
>>> t = pipes.Template()
>>> t.append('tr a-z A-Z', '--')
>>> f = t.open('pipefile', 'w')
>>> f.write('hello world')
>>> f.close()
>>> open('pipefile').read()
'HELLO WORLD'

35.10.1. 模板对象

模板对象遵循以下方法:

Template.reset()

将流水线模板恢复为其初始状态。

Template.clone()

返回一个新的,等效的流水线模板。

Template.debug(flag)

如果 flag 为true,请打开调试。否则,关闭调试。当调试打开时,打印要执行的命令,并向shell给予 set -x 命令以便更详细。

Template.append(cmd, kind)

在结尾添加新操作。 cmd 变量必须是有效的bourne shell命令。 kind 变量由两个字母组成。

第一个字母可以是 '-' (意味着命令读取其标准输入),'f' (意味着命令在命令行上读取给定文件)或 '.' (这意味着命令不读取输入,因此必须是第一个。)

类似地,第二个字母可以是 '-' (意味着命令写入标准输出),'f' (意味着命令在命令行上写入文件)或 '.' (意味着命令不写入任何东西,因此必须最后。)

Template.prepend(cmd, kind)

在开始时添加新操作。有关参数的解释,请参阅 append()

Template.open(file, mode)

返回一个类似文件的对象,打开到 file,但从管道读取或写入。注意,可以仅给出 'r''w' 中的一个。

Template.copy(infile, outfile)

通过管道将 infile 复制到 outfile