2016-02-29 105 views
1

我需要在python中分割一個路徑,然後刪除最後兩個級別。Python:拆分硬編碼路徑

這裏是一個例子,我想解析的路徑。我想分析它到6級。

C:\Users\Me\level1\level2\level3\level4\level5\level6\level7\level8 

以下是我想要的輸出是。目前,我只能上一層。

C:\Users\Me\level1\level2\level3\level4\level5\level6\ 

a ="C:\Users\Me\level1\level2\level3\level4\level5\level6\level7\level8" 
split_path=os.path.split(a) 
print split_path 

輸出:

('C:\Users\Me\level1\level2\level3\level4\level5\level6\level7','level8') 
+1

你究竟想要做什麼?即你總是想要達到6級,還是總是去掉最後兩級? – Batman

+0

我想永遠刪除最後兩個級別 – floridaBoy

+1

將'/../ ..'追加到你的路徑中。 'C:/ some/deep/path /../'相當於'C:/ some/deep /' – Felk

回答

0

您可以使用split函數兩次:

os.path.split(os.path.split(a)[0])[0] 

這工作,因爲os.path.split()返回一個元組兩個項目,頭和尾巴,和b我們拿[0]這樣我們就會領先。然後再次拆分,並再次與[0]第一個項目。

或者兩倍的父目錄加入你的路徑:

os.path.abspath(os.path.join(a, '..', '..')) 

您可以輕鬆創建一個函數,將退一步儘可能多的步驟,只要你想:

def path_split(path, steps): 
    for i in range(steps + 1): 
     path = os.path.split(path)[0] 
    return path 

所以

>>> path_split("C:\Users\Me\level1\level2\level3\level4\level5\level6\level7\level8", 2) 
"C:\Users\Me\level1\level2\level3\level4\level5\level6\" 
4

將路徑分成所有部分,然後連接除最後兩部分以外的所有部分。

import os 

seperator = os.path.sep 
parts = string.split(seperator) 
output = os.path.join(*parts[0:-2]) 
0

os.path.split(path)給出除lastone之外的整個路徑,以及元組中的最後一個路徑。所以如果你想刪除最後兩個,

os.path.split(os.path.split(your_path)[0])[0]