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

Rak*_*esh 5 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 = subprocess.PIPE, stderr = subprocess.PIPE )
(out, error) = pr.communicate()


print "Error : " + str(error) 
print "out : " + str(out)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误,即使我在git reposetory所在的同一目录中运行python脚本.

Error : fatal: Not a git repository (or any of the parent directories): .git
Run Code Online (Sandbox Code Playgroud)

我怀疑git可能会被纠正,但git文件很好,如果我在正常的命令提示符下执行git命令.

我试图在网上搜索但无法获得有用的信息.请帮助它将不胜感激.

San*_*nta 5

问题是你使用os.path.dirname():

os.path.dirname( '/ext/home/rakesh.kumar/workspace/myproject' )
Run Code Online (Sandbox Code Playgroud)

会给你:

>>> os.path.dirname( '/ext/home/rakesh.kumar/workspace/myproject' )
'/ext/home/rakesh.kumar/workspace'
Run Code Online (Sandbox Code Playgroud)

我打赌,这不是你想要的.


Ada*_*dam 4

尝试这个:

#!/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)
Run Code Online (Sandbox Code Playgroud)

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