簡體   English   中英

致命:目標路徑“ myproject”已存在,並且不是空目錄

[英]fatal: destination path 'myproject' already exists and is not an empty directory

有趣的是,當我嘗試使用bash shell克隆對象時

ssh -t -i ~/.ssh/security.pem root@xx.xxx.xx.xx 'rm -rf myproject && git clon -b mybranch https://github.com/myproject.git'

一切正常。

但是當我嘗試從python子進程調用中執行此操作時,例如

subprocess.check_call("ssh -t -i ~/.ssh/security.pem root@xx.xxx.xx.xx 'rm -rf myproject && git clone -b mybranch https://github.com/myproject.git'", shell=True)

那么我會得到以下錯誤:

致命:目標路徑“ myproject”已存在,並且不是空目錄。
追溯(最近一次通話):
文件“”,第1行,位於
在check_call中的文件“ C:\\ Python27 \\ lib \\ subprocess.py”,第540行
提高CalledProcessError(retcode,cmd)

如果要執行長bash命令,則必須將其參數拆分為一個列表。 就像如果我想使用子流程庫運行“ ls -a”一樣,我將不得不做:

subprocess.call(["ls","-a"])

查看文檔以供參考: https : //docs.python.org/2/library/subprocess.html

但是,如果您仍然無法刪除該文件夾,則可以使用shutil庫運行shutil.rmtree()

這是我發現的內容:shell = True。 由於某種原因,python將在遠程計算機上執行第一個shell命令'rm -rf myproject',然后關閉SSH連接,最后執行第二個命令'git clone -b branch https://github.com/myproject .git '在本地計算機中。 就我而言,我在本地目錄中有相同的git存儲庫“ myproject”,因此git嘗試在本地目錄中進行克隆並投訴。 更改為shell = False或將其省略后,一切正常。 不知道為什么shell值會導致這種情況?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM