如何使用Django从.py文件中读取媒体文件?

时间:2010-04-21 02:52:15

标签: python django file-io

我可以这样阅读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 个答案:

答案 0 :(得分:7)

为了更通用(并确保使用媒体文件夹),您可以将其更改为:

import os
from django.conf import settings
text = open(os.path.join(settings.MEDIA_ROOT, 'a.txt'), 'rb').read()

答案 1 :(得分:2)

初始/表示它是一个绝对路径,可以从文件系统的根目录访问。如果要从项目路径中读取文件,则需要使用项目路径启动文件名,或者使用__file__以及os.path中的函数来创建适当的相对或绝对路径

答案 2 :(得分:-1)

您无法从Google App Engine中的应用程序代码中读取静态文件。标记为静态的文件由不同的服务器提供,不包含在您的应用程序中。如果您的应用程序需要阅读它们并且不需要直接向用户提供,请不要将它们标记为静态。如果你需要直接向用户提供它们并用python代码读取它们,你需要在项目中包含2个副本,其中一个标记为static,另一个标记为static。