Платформо-независимые пути к файлам? - PullRequest
42 голосов
/ 17 мая 2011

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

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

Ответы [ 4 ]

70 голосов
/ 17 мая 2011

Вы можете использовать os.path и его функции, которые заботятся о специфичных для ОС путях:

>>> import os
>>> os.path.join('app', 'subdir', 'dir', 'filename.foo')
'app/subdir/dir/filename.foo'

В Windows следует распечатать с обратной косой чертой.

18 голосов
/ 17 мая 2011
import os
os.path.join(os.path.curdir, 'file.name')

или

import os
os.path.join(os.path.dirname(__file__), 'file.name')

в зависимости от того, является ли это модуль (2) или одиночным сценарием (1) , и являетесь ли вывызывая его из того же каталога (1) или из другого (2) .

Edit

Просмотр "попытки"у вас есть в вашем вопросе, я думаю, вы хотели бы (1) .

7 голосов
/ 25 мая 2017

В Python 3.4+ вы можете использовать pathlib:

from pathlib import Path

libdir = Path(__file__).resolve().with_name('modules')

Как это работает: атрибут __file__ содержит путь к файлу, из которого был загружен модуль,Вы используете его для инициализации объекта Path, создания абсолютного пути с помощью метода resolve() и замены конечного компонента пути с помощью метода with_name().

5 голосов
/ 17 мая 2011

__file__ содержит местоположение модуля.Используйте функции из os.path, чтобы извлечь из него каталог.

...