pipes — 与 shell 管道交互的接口

源代码: Lib/pipes.py

自版本 3.11 起已弃用,将在版本 3.13 中移除:pipes 模块已弃用(有关详细信息,请参阅 PEP 594)。请改用 subprocess 模块。


pipes 模块定义了一个类,用于抽象管道的概念,即从一个文件到另一个文件的转换器序列。

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

可用性:Unix,不包括 VxWorks。

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'

模板对象

模板对象遵循以下方法

Template.reset()

将管道模板恢复到其初始状态。

Template.clone()

返回一个新的等效管道模板。

Template.debug(flag)

如果flag为真,则打开调试。否则,关闭调试。当调试打开时,将打印要执行的命令,并且将向 shell 提供 set -x 命令以使其更详细。

Template.append(cmd, kind)

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

第一个字母可以是 '-'(表示命令读取其标准输入)、'f'(表示命令读取命令行上的给定文件)或 '.'(表示命令不读取任何输入,因此必须是第一个命令)。

类似地,第二个字母可以是 '-'(表示命令写入标准输出)、'f'(表示命令写入命令行上的文件)或 '.'(表示命令不写入任何内容,因此必须是最后一个命令)。

Template.prepend(cmd, kind)

在开头添加一个新操作。有关参数的说明,请参阅 append()

Template.open(file, mode)

返回一个类似文件的对象,对文件打开,但由管道读取或写入。请注意,只能给出 'r''w' 中的一个。

Template.copy(infile, outfile)

通过管道将infile复制到outfile