У меня ниже String.
a = "/root/LOAD/LOGS/2018-06-15_13:54/"
Как я могу получить результат:
"/root/LOAD/LOGS/"
Вы можете использовать os.path.dirname
для перехода в каталог столько раз, сколько вам нужно.
>>> import os
>>> a = "/root/LOAD/LOGS/2018-06-15_13:54/"
>>> os.path.dirname(a)
'/root/LOAD/LOGS/2018-06-15_13:54'
>>> os.path.dirname(os.path.dirname(a))
'/root/LOAD/LOGS'
Это легко переносить в вспомогательную функцию, если вы хотите переместить известное количество каталогов
def parent_dir(path, n):
if n > 1:
return parent_dir(os.path.dirname(path), n-1)
return os.path.dirname(path)
пример
>>> parent_dir(a, 2)
'/root/LOAD/LOGS'
Лично я предпочитаю модуль pathlib
.
from pathlib import Path
path = Path("/root/LOAD/LOGS/2018-06-15_13:54/")
parent = path.parent # == Path("/root/LOAD/LOGS/")
parent_as_string = str(parent) # == "/root/LOAD/LOGS/"
Это также повторяемо
parent_of_parent = path.parent.parent # == Path('/root/LOAD')
Есть несколько методов, я лично использовал бы модуль re (import re
). Но есть также возможность извлечь каталог без дополнительного модуля. Это зависит от того, хотите ли вы посмотреть на слэш (подкаталог) или количество символов достаточно (если имя каталога не изменяется).
>>> a = "/root/LOAD/LOGS/2018-06-15_13:54/"
>>> "/".join(a.split("/")[:-2]) # from right side
'/root/LOAD/LOGS'
>>> "/".join(a.split("/")[:4]) # from left side
'/root/LOAD/LOGS'
>>> a[:15]
'/root/LOAD/LOGS'