在Python中使用subprocess.Popen运行git命令

1 投票
1 回答
6478 浏览
提问于 2025-04-16 20:36

我正在写一个小的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

subprocess.Popen:

在Unix系统中,当你使用 shell=True 时:[…] 如果你传入的参数是一个列表,第一个项目是命令字符串,后面的项目会被当作是传给命令行的额外参数

如果你使用 shell=True,就不应该再传入参数列表。应该把 shell 设置为 False

撰写回答