Python - 将字符串作为输入传递给命令

时间:2011-12-07 18:11:32

标签: python

  

可能重复:
  Python module to shellquote/unshellquote?

我试图将一个字符串的值作为输入传递给一个命令,在Python中执行一个bash命令。我目前有这样的事情:

cmd = 'echo ' + <StringValue> + ' | command'
output = commands.getOutput(cmd)

但它不起作用,因为我的字符串值也同时包含“和”,所以它会错误地解析它们。有人可以告诉我如何通过它吗?

2 个答案:

答案 0 :(得分:0)

commands模块自python 2.6以来已被弃用,并在python 3中被删除,您应该使用subprocess模块。

python文档中的replacing shell pipeline部分应该提供您需要的信息。

编辑:作为评论问题的后续内容,您可以使用以下代码将字符串传递给您的流程:

import subprocess

process = subprocess.Popen('cat', stdin=subprocess.PIPE)
process.stdin.write('abc "def"')
process.communicate()

输出这将是abc“def”与您正在寻找的引号。

答案 1 :(得分:0)

至于解析,你可以使用三引号在字符串中包含文字“和”:

>>> print """test "a" 'b'"""
test "a" 'b'