2013-07-15 66 views

回答

6

截至the docs頂部的大注云:

由於不同的操作系統有不同的路徑名稱約定,標準庫中有這個模塊的幾個版本。 os.path模塊始終是適合Python運行的操作系統的路徑模塊,因此可用於本地路徑。但是,如果要操縱始終採用不同格式之一的路徑,還可以導入和使用各個模塊。他們都有着相同的接口:

  • posixpath爲UNIX風格的路徑
  • ntpath爲Windows路徑
  • macpath適用於舊的MacOS的路徑
  • os2emxpath用於OS/2 EMX路徑

顯然,像ntpath.lexists這樣的東西不會在POSIX系統上工作,但是像join,basename等會。

如果您不知道遠程服務器需要什麼格式,並且沒有任何方法可以解決,posixpath通常是安全的。 sftp和Paramiko的類似功能將始終處理POSIX路徑;如果你使用的是ssh shell,cmd.exe和你想運行的許多命令行工具(包括Python腳本)將能夠在Windows上處理它們,OS/2也是如此,當然舊式Mac甚至沒有一個外殼,你可以ssh到。

0

我建議你看看fabric

  • 它利用paramiko作爲底層的東西(transport/ssh/sftp)。
  • 這是一個非常好的選擇運行Task,或自動化。
  • 他們正在研究remote execution hooks (open issue)
    • execnetpushy,pyro ...和其他並行處理庫。

引擎蓋下,fabricposixpath.join()使用,因爲Windows does support / as a directory separator。他們遇到了同樣的問題,並更改了from os.path.join to posixpath.join() in this commit

特點fabric

+0

你看了我的回答的最後一段?它已經說過「'posixpath'通常是一個安全的賭注」,並繼續解釋原因。 – abarnert

+0

你可以編輯我的答案來添加它們,或評論我的答案;將所有信息放在一個地方比讓其他答案參考的答案更好。 (如果有人剛剛閱讀我的答案,但沒有閱讀你的答案,他們將看不到你的鏈接。) – abarnert

+0

這就好比我的觀點:如果60%的文本與另一個不同回答,如果您將60%編輯到我的答案中或將其添加爲評論,我的答案將是關於'paramiko' /只是簡單路徑的更好答案。 – abarnert

相關問題