Как прочитать медиа-файл из .py файла с помощью Django? - PullRequest
2 голосов
/ 21 апреля 2010

Я могу прочитать a.txt файл так:

text = open('a.txt', 'rb').read()

Но когда я помещаю a.txt в папку media, это не работает:

text = open('/media/a.txt', 'rb').read()

Я получаю следующую ошибку:

IOError at /
[Errno 13] file not accessible: '/media/a.txt'

Как я могу прочитать файл из каталога media?

Ответы [ 3 ]

7 голосов
/ 21 апреля 2010

Чтобы быть более общим (и быть уверенным, что вы используете папку мультимедиа), вы можете изменить ее на:

import os
from django.conf import settings
text = open(os.path.join(settings.MEDIA_ROOT, 'a.txt'), 'rb').read()
2 голосов
/ 21 апреля 2010

Начальный / означает, что это абсолютный путь, доступ к которому осуществляется из корня файловой системы. Если вы хотите прочитать файл из пути проекта, вам нужно вместо этого начать имя файла с пути проекта или использовать __file__ вместе с функциями в os.path, чтобы создать соответствующий относительный или абсолютный путь.

0 голосов
/ 21 апреля 2010

Вы не можете читать статические файлы из кода своего приложения в Google App Engine. Файлы, помеченные как статические, отправляются с разных серверов и не включаются в ваше приложение. Если вашему приложению необходимо их прочитать, и их не нужно обслуживать напрямую пользователям, не помечайте их как статические. Если вам нужно предоставить их непосредственно пользователям и прочитать их в коде Python, вам нужно включить в свой проект 2 копии, одна из которых помечена как статическая, а другая - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...