Shell管道的Python接口
要使用python使用UNIX命令管道机制。在命令流水线中,序列从一个文件转换为另一个文件。
该模块使用/bin/sh命令行。因此,我们需要os.system()和os.popen()方法。
要使用此模块,我们应该使用-导入它
import pipes
管道持有Template类-
类管道。模板
此类基本上是管道的抽象。它有不同的方法。这些如下。
方法Template.reset()
此方法用于将管道模板还原到其初始位置。
方法Template.clone()
此方法用于创建另一个新的相同模板对象。
方法Template.debug(flag)
此方法用于调试过程。当该标志为true时,打开调试模式。启用时,将在执行期间打印命令。
方法Template.append(command,kind)
此方法用于最后插入新任务。该命令必须是bourneshell命令。kind变量由两个字符组成。
对于第一个字母,它意味着-
'–'
命令读取标准输入
'F'
命令将在命令行上读取给定的文件
'。'
命令不读取任何输入。因此它将处于第一位置。
对于第二个字母,它表示。
'–'
命令写入标准输出
'F'
命令将在命令行上写入文件
'。'
命令不写任何输出。因此它将位于最后一个位置。
方法Template.prepend(command,kind)
此方法用于在开始时插入新任务。该命令必须是bourneshell命令。它类似于该append()
方法。
方法Template.open(文件,模式)
此方法用于打开要读取或写入的文件。但是读或写操作是由管道完成的。
方法Template.copy(infile,outfile)
该方法用于通过管道从infile复制到outfile。
范例程式码
import pipes my_template = pipes.Template() my_template.append('tr a-z A-Z', '--') my_template.prepend('echo Python Programming', '--') #Prepend the item into queue my_template.append('rev', '--') my_template.debug(True) my_file = my_template.open('test_file', 'w') my_file.close() content = open('test_file').read() print(content)
输出结果
$ python3 example.py echo Python Programming | tr a-z A-Z | rev >test_file + rev + tr a-z A-Z + echo Python Programming GNIMMARGORP NOHTYP