Подтвердить что ты не робот

Независимые от платформы пути к файлам?

Как я могу использовать файл внутри папки моего приложения в Python? Платформа независима, конечно... что-то похожее на это:

#!/bin/sh
mypath=${0%/*}
LIBDIR=$mypath/modules
4b9b3361

Ответ 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, чтобы извлечь из него каталог.