Открыть файл в приложении Django
я хочу открыть файл из приложения Django с помощью open()
. Проблема в том, что open()
кажется, использует любой каталог, из которого я запускаю runserver
команда в качестве корня.
Е. Г. если я запустить сервер в каталог с именем foo, как это
$pwd
/Users/foo
$python myapp/manage.py runserver
open()
использует foo
как корневой каталог.
если я сделаю это вместо
$cd myapp
$pwd
/Users/foo/myapp
$python manage.py runserver
myapp
будет корнем.
допустим, моя структура папок выглядит так это
foo/myapp/anotherapp
я хотел бы иметь возможность открыть файл, расположенный по адресу foo/myapp/anotherapp
из скрипта, также расположенного по адресу foo/myapp/anotherapp
просто сказать
file = open('./baz.txt')
теперь, в зависимости от того, где я запустить сервер, я должен сказать
file = open('./myapp/anotherapp/baz.txt')
или
file = open('./anotherapp/baz.txt')
2 ответов
решение было описано в Любимые Советы И Приемы Django вопрос. Решение заключается в следующем:
import os
module_dir = os.path.dirname(__file__) # get current directory
file_path = os.path.join(module_dir, 'baz.txt')
что делает именно то, что вы упомянули.
Ps. Пожалуйста, не переписывайте file
переменной, это один из встроенных.
Я думаю, что нашел ответ через другой вопрос переполнения стека (да, я искал, прежде чем спрашивать...)
теперь я делаю это
pwd = os.path.dirname(__file__)
file = open(pwd + '/baz.txt')