python调用系统命令遇到“&&”怎么处理?

stone-sun 发布于 2013/11/13 11:09
阅读 301
收藏 0

from subprocess import Popen,PIPE

cmd = ['cd','/opt','&&','ls']
subf = Popen(cmd,stdout=PIPE,stderr=PIPE)
上述操作是不通过的,但是调用shell的做法却可以通过,如下:
cmd = 'cd /opt && ls'
subf = Popen(cmd,stdout=PIPE,stderr=PIPE,shell=True)

请问在python中调用系统命令遇到这个”&&“需要怎么处理?如何才能使用前面的方式?

加载中
0
李学明
李学明

不调用shell第一种方法行不通的,因为 && 是shell的语法,除此之外,管道和输入输出重定向也必须调用shell。

当然变通的实现方法也是有的,就是分两次调用,判断上一个命令的退出码

stone-sun
stone-sun
的确可以,可以使用os.chdir来切换目录然后执行操作。谢谢
返回顶部
顶部