2012-11-18 29 views
4

我正在使用Fabric進行項目管理,部署等。我不太瞭解運行命令的更方便的方法。例如,考慮我不在乎織物local函數的captureshell參數,這些函數的優點/缺點如下?運行OS本機命令VS Python中的Fabric

os.mkdir(path) 

VS

local("mkdir %s" % path) 
+0

我會說'本地(「mkdir%s」%路徑)'不太健壯,因爲你不處理空間和/或奇怪的字符的路徑,而'os.mkdir'應該自動處理它們。 但我不知道這對你是否重要。 – Bakuriu

回答

2

根據您的項目的目標,要麼稍微適合一些。這裏有一些優點和缺點。

  • 優點爲Python標準庫函數
    • 跨平臺兼容
    • 通常更有效,因爲沒有創建子進程
    • 整體較不復雜的涉及更少的模塊,過程,移動部件,殼解析,等等(因此更容易調試)
  • 織物優點local
    • 更容易爲你的項目更改
    • run更加一致和sudolocalrunsudo之間切換

我認爲,可以很容易地使用標準庫函數應該是代表簡單local命令由於複雜性較低,僅使用標準庫作爲默認選項編寫。特別情況下,我會問自己哪個更可能:在不同的操作系統上運行此程序,或將此命令從本地轉換爲遠程命令,然後編碼爲local(如果後者更可能)。

1

使用OS本機命令意味着你可以將它們作爲參數傳遞給兩個localrun。這更加一致和靈活。

1

一些優點是already mentioned,但認爲使用local(和朋友)的另一個優點是非Python人員可以更容易地看到發生了什麼。