如果要将该命令作为字符串传递给该命令,Popen
并且该命令中具有到其他命令的管道,则需要使用shell=True
关键字。
我对omp
命令并不特别熟悉,但是闻起来就像是无用的猫一样。我认为实现此目标的更好方法是:
import shlex
omp_cmd = 'omp -h %s -u %s -w %s -p %s -X %s' %(self.host_IP, self.username, self.password, self.port, temp_xml)
xmlResult = Popen(shlex.split(omp_cmd), stdout=PIPE, stderr=STDOUT)
或者,如果这不是对cat的无用使用(您确实需要通过stdin将文件通过管道传输),也可以使用子进程来实现:
import shlex
omp_cmd = 'omp -h %s -u %s -w %s -p %s -X -' %(self.host_IP, self.username, self.password)
with open(temp_xml) as stdin:
xmlResult = Popen(shlex.split(omp_cmd), stdin=stdin, stdout=PIPE, stderr=STDOUT)