通过外部程序过滤python字符串

时间:2010-04-19 20:25:32

标签: python

通过外部程序过滤Python字符串的最简洁方法是什么?特别是,你如何编写以下函数?

def filter_through(s, ext_cmd):
  # Filters string s through ext_cmd, and returns the result.

# Example usage:
#   filter a multiline string through tac to reverse the order.
filter_through("one\ntwo\nthree\n", "tac")
#   => returns "three\ntwo\none\n"

注意:示例只是 - 我意识到在python中有更好的方法来反转行。

1 个答案:

答案 0 :(得分:5)

使用subprocess模块。

在您的情况下,您可以使用类似

的内容
import subprocess
proc=subprocess.Popen(['tac','-'], shell=True, stdin=subprocess.PIPE,
                      stdout=subprocess.PIPE, )
output,_=proc.communicate('one\ntwo\nthree\n')
print output

请注意,发送的命令是tac -,因此tac期望从stdin输入。 我们通过调用communicate方法发送到stdin。 communicate返回一个2元组:stdout和stderr的输出。