Ответ 1
Да есть такая встроенная функция: os.path.join
.
>>> import os.path
>>> os.path.join('/my/root/directory', 'in', 'here')
'/my/root/directory/in/here'
Я ищу несколько советов относительно наилучшего способа создания пути к файлу с использованием переменных, в настоящее время мой код выглядит примерно так:
path = /my/root/directory
for x in list_of_vars:
if os.path.isdir(path + '/' + x): # line A
print(x + ' exists.')
else:
os.mkdir(path + '/' + x) # line B
print(x + ' created.')
Для строк A и B, как показано выше, есть ли лучший способ создать путь к файлу, так как это станет больше, чем глубже я углубиться в дерево каталогов?
Я предполагаю использовать существующий встроенный метод, который будет использоваться следующим образом:
create_path(path, 'in', 'here')
создавая путь вида /my/root/directory/in/here
Если нет встроенной функции, я просто напишу себе.
Спасибо за любой вклад.
Да есть такая встроенная функция: os.path.join
.
>>> import os.path
>>> os.path.join('/my/root/directory', 'in', 'here')
'/my/root/directory/in/here'
Вам нужна функция path.join() из os.path.
>>> from os import path
>>> path.join('foo', 'bar')
'foo/bar'
Это создает ваш путь с помощью os.sep(вместо менее портативного '/'
) и делает это более эффективно (в общем), чем использование +
.
Однако это не приведет к созданию пути. Для этого вам нужно сделать что-то вроде того, что вы делаете в своем вопросе. Вы могли бы написать что-то вроде:
start_path = '/my/root/directory'
final_path = os.join(start_path, *list_of_vars)
if not os.path.isdir(final_path):
os.makedirs (final_path)
Вы также можете использовать объектно-ориентированный путь с pathlib
(доступен как стандартная библиотека в Python 3.4):
from pathlib import Path
start_path = Path('/my/root/directory')
final_path = start_path / 'in' / 'here'