Независимые от платформы пути к файлам?
Как я могу использовать файл внутри папки моего приложения в Python? Платформа независима, конечно...
что-то похожее на это:
#!/bin/sh
mypath=${0%/*}
LIBDIR=$mypath/modules
Ответы
Ответ 1
Вы можете использовать os.path
и его функции, которые заботятся о конкретных для ОС путях:
>>> import os
>>> os.path.join('app', 'subdir', 'dir', 'filename.foo')
'app/subdir/dir/filename.foo'
В Windows он должен распечатываться с обратной косой чертой.
Ответ 2
import os
os.path.join(os.path.curdir, 'file.name')
или
import os
os.path.join(os.path.dirname(__file__), 'file.name')
в зависимости от того, является ли он модулем (2) или единственным script (1), и вы вызываете его из одного каталога (1) или другого (2).
Изменить
Глядя на "попытку", которую вы имеете в своем вопросе, я бы предположил, что вам нужно (1).
Ответ 3
В Python 3. 4+ вы можете использовать pathlib
:
from pathlib import Path
libdir = Path(__file__).resolve().with_name('modules')
Как это работает: атрибут __file__
содержит путь к файлу, из которого был загружен модуль. Вы можете использовать его для инициализации Path
объекта, сделать путь абсолютного использования resolve()
метод и заменить последний компонент пути с использованием with_name()
метод.
Ответ 4
__file__
содержит расположение модуля. Используйте функции в os.path
, чтобы извлечь из него каталог.