2016-03-07 93 views
0

我很疑惑爲什麼Sublime Text 2構建系統傾向於將exec命令作爲數組。雖然這是在文檔(和作品)中提出的,但將該命令作爲字符串運行也是一樣,並且(在我看來)更直接。Sublime build exec命令數組

http://docs.sublimetext.info/en/latest/reference/build_systems/exec.html

+1

Sublime Text構建系統調用'subprocess.Popen',它建議使用一個數組。否則,行爲是依賴於平臺的,並且字符串在非Windows系統上具有明顯不同的行爲。請閱讀[文檔](https://docs.python.org/2/library/subprocess.html#popen-constructor)。 –

+0

如果你想把它作爲答案,我會結束這個問題。 – Dimpl

回答

1

崇高文本構建系統使用subprocess.Popen,其中建議的陣列的使用。否則,解釋是依賴於平臺的。

python 2 subprocess documentation引:

ARGS應的程序參數的序列或者一個字符串。默認情況下,如果args是一個序列,則要執行的程序是args中的第一個項目。如果args是一個字符串,則解釋是依賴於平臺的(...)。除非另有說明,否則建議將參數作爲序列傳遞。

其他重要舉(感謝@Dimpl指出了這一點):

殼參數(缺省爲)指定是否使用殼作爲要執行的程序。如果shell是True,建議將args作爲字符串而不是序列傳遞。

外殼參數設置如果使用shell_cmdcmd。因此,根據這些引用,我建議使用cmd的數組和shell_cmd的字符串。

+1

注意(從上面引用的文檔):shell參數(默認爲False)指定是否使用shell作爲要執行的程序。如果shell爲True,建議將參數傳遞爲字符串而不是序列。 – Dimpl

+0

謝謝@Dimpl,我添加了引用我的答案 –