在Python中使用subprocess.Popen运行git命令
我正在写一个小的Python脚本,需要在指定的目录中执行git命令。
代码如下:
import subprocess, os
pr = subprocess.Popen(['/usr/bin/git', 'status'],
cwd=os.path.dirname('/path/to/dir/'),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
(out, error) = pr.communicate()
print out
但是它的输出显示的是git的使用说明。
如果命令不涉及git,比如 ['ls']
,那么输出是正确的。
我是不是漏掉了什么?
Python版本 - 2.6.6
谢谢。
1 个回答
7
在Unix系统中,当你使用
shell=True
时:[…] 如果你传入的参数是一个列表,第一个项目是命令字符串,后面的项目会被当作是传给命令行的额外参数。
如果你使用 shell=True
,就不应该再传入参数列表。应该把 shell
设置为 False
。