我需要在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')
答案 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]