Как объединить пути хороший способ? - PullRequest
0 голосов
/ 03 февраля 2020

Что у меня есть:

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
filepath = 'files/one.txt'
request_path = os.path.join(BASE_DIR, filepath)
print(request_path, filepath, BASE_DIR)

И оно печатает

/files/one.txt /files/one.txt /home/pavel/Dev/AiPOSiZI/Lab_1

, что означает, что пути не были объединены.

Но

os.path.join('/home/pavel/Dev/AiPOSiZI/Lab_1/', 'files/one.txt')

(я добавил / в конец / home / ... и удалил / из начала / files / ...) работает хорошо.

Я мог бы просто вручную добавить и удалить / из пути, но мне интересно, есть ли более элегантный способ присоединиться к ним

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

На python 3.8.0, похоже, работает как ожидалось.

import os

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

filepath = 'files/one.txt'
request_path = os.path.join(BASE_DIR, filepath)
print(request_path, filepath, BASE_DIR)
$ python -V
Python 3.8.0
$ python /tmp/a.py
/tmp/files/one.txt files/one.txt /tmp
0 голосов
/ 03 февраля 2020

Вы можете использовать f-строку в python (см. документация ).

В вашем случае:

request_path  = f"{BASE_DIR}/{filepath}"

Имейте в виду, что вам нужны дополнительные sla sh " / " между переменными расположения файла (BASE_DIR и filepath), чтобы правильно указать полное местоположение файла.

Надеюсь, это поможет!

...