我试图将一个字符串的值作为输入传递给一个命令,在Python中执行一个bash命令。我目前有这样的事情:
cmd = 'echo ' + <StringValue> + ' | command'
output = commands.getOutput(cmd)
但它不起作用,因为我的字符串值也同时包含“和”,所以它会错误地解析它们。有人可以告诉我如何通过它吗?
答案 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'