os.path.join кажется чувствительным к открытию слэша, почему? - PullRequest
1 голос
/ 15 апреля 2019

Добавление косой черты в документы в os.join приводит к другим результатам, когда я думаю, что это не должно.Почему?

Просто пытаюсь написать код, который делает разумные вещи для нескольких пользователей.

import os
# Initialize output files and folders, following principle of separating code from data
homeDir = os.path.expanduser('~')
targetDir = os.path.join(homeDir, '/Documents/Jeopardy/output')
print(targetDir)
# produces /Documents/Jeopardy/output  which is not expected
targetDir = os.path.join(homeDir, 'Documents/Jeopardy/output')
print(targetDir)
# produces /home/max/Documents/Jeopardy/output  which is expected

Я ожидал, что оба объединения произведут / home / max / Documents / Jeopardy / output Но первыйне сделал.Я не должен понимать документ присоединения, но я не могу понять, почему я получаю разные результаты.заранее спасибо

1 Ответ

1 голос
/ 15 апреля 2019

Из join() строки документации :

Если компонент является абсолютным путем, все предыдущие компоненты отбрасываются, и соединение продолжается с компонента абсолютного пути.

'/Documents/Jeopardy/output' - это абсолютный путь, поэтому первая часть отбрасывается.

Поведенческое, использование относительного, а не абсолютного пути, возможно, имеет больше смысла; бессмысленно добавлять что-либо к абсолютному пути, поскольку оно уже начинается с корня FS.

...