Python3 - сократить путь к домашнему каталогу в Ubuntu - PullRequest
0 голосов
/ 03 августа 2020

У меня есть путь к файлу, который находится в домашнем каталоге, и я sh обрабатываю его, чтобы он стал сокращенным путем, который включает в себя «~».

Например, мой ввод может быть:

"/home/username/test" или /home/./username/test или /home/../home/username/test

и я wi sh, чтобы получить

~/test

Я попытался .split("/") и сопоставить первые два термина, но когда со всеми этими словами немного сложнее "." и ".." Я понятия не имею, как этого добиться.

Как эффективно обрабатывать пути для достижения указанной выше цели?

Ответы [ 3 ]

2 голосов
/ 03 августа 2020

Используйте os.path.realpath для преобразования пути в каноническую форму и затем проверьте, совпадает ли начало с домашним каталогом.

0 голосов
/ 03 августа 2020

Спасибо за помощь!

Мое окончательное решение с использованием os.path.realpath() выглядит следующим образом

Прокомментируйте, если я сделал что-то не так или есть лучший способ!

from os import path

def getShortPath(p):
    realpath = path.realpath(p).split("/")[1:]
    homepath = path.expanduser("~").split("/")[1:]
    if realpath[:2] == homepath:
        processed = "~"
        realpath = realpath[2:]
    else: processed = "/"
    for i in realpath:
        processed = path.join(processed,i)
    return processed

0 голосов
/ 03 августа 2020

Попробуйте использовать

from pathlib import Path
home_path = str(Path.home())

Вот документация ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...