我是python的新手。目标是使用子进程解析&执行shell命令。从shell返回打印输出。执行错误输出如下面的示例输出msg所示。下面还显示了示例代码段
代码段:
testStr = "cat tst.txt | grep Location | sed -e '/.*Location: //g' "
print "testStr = "+testStr
testStrOut = subprocess.Popen([testStr],shell=True,stdout=subprocess.PIPE).communicate()[0]
输出:
testStr = cat tst.txt | grep Location | sed -e '/.*Location: //g'
cat: tst.txt: No such file or directory
sed: -e expression #1, char 15: unknown command: `/'
是否有可以使用的变通方法或功能?
感谢您的帮助 感谢
答案 0 :(得分:1)
我认为你的主要错误与python无关。更确切地说,有3个:
import subprocess
。sed -e 's/.*Location: //g'
。您写了///g
而不是s///g
。tst.txt
不存在。答案 1 :(得分:1)
您应该直接将testStr作为第一个参数传递,而不是将其包含在列表中。请参阅subprocess.Popen,开头的段落“在Unix上,shell = True:...”。