Вопрос: os.path.join (), который не отбрасывает перед началом косой черты?


Питона os.path.join был описанный как «в основном бессмысленный»,  потому что он отбрасывает любые аргументы до одного, содержащего ведущую косую черту. Оставляя в стороне на данный момент, что это преднамеренное и задокументированное поведение, есть ли доступная функция или шаблон кода, который не отбрасывается так?

Данный HOMEPATH=\users\myname, следующее отбрасывает начало пути

print os.path.join('C:\one', os.environ.get("HOMEPATH"), 'three')

результат:

\Users\myname\three

желательно:

C:\one\Users\myname\three

Укушенный этим несколько раз, я довольно хорошо заметил замечательную косую черту, когда это то, что я написал, но как насчет того, когда вы не знаете, как выглядит входящая строка, как в этом примере ?


4


источник


Ответы:


Может быть os.environ.get("HOMEPATH").lstrip(os.path.sep)... было бы тривиально написать собственную версию join это делало это по каждому аргументу (или второму и последующему).


6



Просто разделите косую черту

path = os.environ.get("HOMEPATH").lstrip(os.path.sep)
os.path.join('C:\one', path, 'three')

3