尝试使用python脚本执行git命令

尝试使用python脚本执行git命令,python,git,Python,Git,我正在尝试使用以下python脚本执行一个简单的git命令 #!/usr/bin/python import commands import subprocess import os import sys pr = subprocess.Popen( "/usr/bin/git log" , cwd = os.path.dirname( '/ext/home/rakesh.kumar/workspace/myproject' ), shell = True, stdout = subproc

我正在尝试使用以下python脚本执行一个简单的git命令

#!/usr/bin/python

import commands
import subprocess
import os
import sys

pr = subprocess.Popen( "/usr/bin/git log" , cwd = os.path.dirname( '/ext/home/rakesh.kumar/workspace/myproject' ), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE )
(out, error) = pr.communicate()


print "Error : " + str(error) 
print "out : " + str(out)
但是,即使我在git reposetory所在的同一目录中运行python脚本,也会出现以下错误

Error : fatal: Not a git repository (or any of the parent directories): .git
我怀疑git可能被修改了,但是如果我在正常的命令提示符下执行,git文件就可以了,git命令也可以工作

我试图在网上搜索,但找不到有用的信息。请帮忙,我们将不胜感激

试试这个:

#!/usr/bin/python

import commands
import subprocess
import os
import sys

pr = subprocess.Popen( "/usr/bin/git log" , cwd = os.path.dirname( '/ext/home/rakesh.kumar/workspace/myproject/' ), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE )
(out, error) = pr.communicate()


print "Error : " + str(error) 
print "out : " + str(out)

目录路径的末尾应该有“/”。

问题在于您使用了
os.path.dirname()

将为您提供:

>>> os.path.dirname( '/ext/home/rakesh.kumar/workspace/myproject' )
'/ext/home/rakesh.kumar/workspace'

我敢打赌,这不是您想要的。

以79个字符包装的代码有什么问题吗?请注意,如果设置了
GIT_DIR
环境变量,也会发生此错误(尤其是相对路径,就像在GIT hooks中发生的那样)
>>> os.path.dirname( '/ext/home/rakesh.kumar/workspace/myproject' )
'/ext/home/rakesh.kumar/workspace'