Python:拆分硬编码路径

时间:2016-02-29 22:39:07

标签: 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')

3 个答案:

答案 0 :(得分:4)

将路径分成所有部分,然后连接除最后两部分之外的所有部分。

import os

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

答案 1 :(得分:0)

您可以使用split功能两次:

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

这是有效的,因为os.path.split()会返回一个包含头部和尾部两个项目的元组,并且通过获取[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\"

答案 2 :(得分:0)

os.path.split(path)给出除了lastone之外的整个路径,以及元组中的最后一个路径。所以如果你想删除最后两个,

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