2016-02-29 74 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]