2014-09-04 65 views
0

我想有一個Python腳本階段文件到本地託管的Git:「文件名,目錄名或卷標語法不正確 r n」,無

gitExe = r"C:\Git\bin\git.exe" 
gitdir = r' --git-dir="G:\QA\.git"' 
worktree = r' --work-tree="G:\QA\"' 
gitcmd = " add" 
myCsv = "Reports.csv" 

import subprocess 

print gitdir 
print gitcmd 
print gitExe 

cmd = 'C:\\Git\\bin\\git.exe --git-dir="G:\\QA\\.git" --work-tree="G:\\QA" add Reports.csv' ####WORKS#### 
#cmd = ['C:\\Git\\bin\\git.exe --git-dir="G:\\QA\\.git" --work-tree="G:\\QA" add Reports.csv'] ####DOESNT WORK#### 
#cmd = ['C:\\Git\\bin\\git.exe --git-dir="G:\\QA\\.git" --work-tree="G:\\QA" add Reports.csv'+""] ####DOESNT WORK#### 
#cmd = [gitExe + gitdir + worktree + gitcmd + myCsv] ####DOESNT WORK#### 
p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) 
print cmd 
print p.communicate() 

當我通過完整的命令作爲一個字符串(uncommendted線以上)一切工作正常,但是當我把它作爲一個數組(三註釋掉線以上)我收到以下錯誤信息:

>>> ================================ RESTART ================================ 
>>> 
--git-dir="G:\QA\.git" 
add 
C:\Git\bin\git.exe 
['C:\\Git\\bin\\git.exe --git-dir="G:\\QA\\.git" --work-tree="G:\\QA\\" addReports.csv'] 
('The filename, directory name, or volume label syntax is incorrect.\r\n', None) 

是怎麼回事?

回答

0

當您將命令作爲數組傳遞時,每個參數都必須是單獨的元素。

cmd = ['C:\\Git\\bin\\git.exe', '--git-dir="G:\\QA\\.git"', '--work-tree="G:\\QA"', 
    'add', 'Reports.csv'] 

數組中的第一項是程序名。在你的情況下,python試圖將整個命令行變成程序名。

相關問題