2015-07-10 26 views
1

我有一個像下面這樣的代碼片段。如何理解下面的'os.path.join'python命令?

out_dir = os.path.join(dir, "myfile-{0}".format(os.environ['JOB_ID'])) 

我知道os.path.join用於智能地連接一個或多個路徑組件。那麼這是否意味着「myfile- {0}」。格式(os.environ ['JOB_ID'])也是一個路徑組件?爲什麼會這樣?非常感謝您的時間和關注。

+2

這只是一個字符串。查找['str.format()'](https://docs.python.org/3/library/stdtypes.html#str.format)。 – TigerhawkT3

+3

''myfile- {0}「.format(x)'在概念上與'」myfile-「+ str(x)'相同。 – rlbond

回答

1

我們來分析一下你的問題:

out_dir = os.path.join(dir, "myfile-{0}".format(os.environ['JOB_ID'])) 

你已經知道的是:out_dir是一個變量名,os.path.join是創建了兩個(或更多)字符串的目錄路徑的方法。 你不完全確定的是該方法的參數:dir是之前聲明的一些變量對你來說也很清楚,但表達式"myfile-{0}".format(os.environ['JOB_ID'])對你來說沒有什麼困惑。 myfile-{0}"是一個字符串,而且一個可以調用字符串上的方法format,大括號{0}中的零被替換爲第一個參數,如果有{1}它將被替換爲第二個參數。插入os.environ['JOB_ID']的返回值代替{0}

假設返回值爲1,所以這會產生字符串"myfile-1"。假設dir的值是"/path/to/the/directory"。然後變量out_dir被分配值"/path/to/the/directory/myfile-1"。請注意斜槓/os.path.join創建文件路徑來維護目錄分隔符。

這意味着"myfile-{0}".format(os.environ['JOB_ID'])也是一個路徑組件。

+0

我知道你已經回答了這個問題。但不知何故,我得到了以下錯誤:out_dir = os.path.join(dir,「myfile- {0}」.format(os.environ ['JOB_ID'])) 文件「/apps/x86_64/python/2.7。 6/lib/python2.7/UserDict.py「,第23行,在__getitem__ 引發KeyError(key) KeyError:'JOB_ID' 您碰巧知道爲什麼? – ntough

+0

'os.environ ['JOB_ID']'試圖獲取環境變量JOB_ID。它必須在python腳本運行之前聲明。您可以在bash中運行命令'env'並查看JOB_ID是否存在。 – cezar