Python - 将字符串作为命令输入
可能重复的问题:
有没有Python模块可以处理shell中的引号问题?
我想把一个字符串的值作为输入传递给一个命令,在Python中执行一个bash命令。目前我有这样的代码:
cmd = 'echo ' + <StringValue> + ' | command'
output = commands.getOutput(cmd)
但是它不工作,因为我的字符串值里面同时包含了双引号(")和单引号('),所以解析的时候出错了。有没有人能告诉我该怎么处理这个问题?
2 个回答
0
现在,commands
模块已经不再使用了,从Python 2.6开始就被弃用了,在Python 3中已经完全移除了。你应该使用subprocess
模块来代替它。
你可以查看Python文档中的替代shell管道部分,里面会有你需要的信息。
补充说明:针对你评论中的问题,你可以使用以下代码将一个字符串传递给你的进程:
import subprocess
process = subprocess.Popen('cat', stdin=subprocess.PIPE)
process.stdin.write('abc "def"')
process.communicate()
这样输出的结果会是abc "def",带有你想要的引号。
0
关于解析字符串,你可以使用三重引号,这样就可以在字符串中直接包含双引号(")和单引号(')了:
>>> print """test "a" 'b'"""
test "a" 'b'