【问题标题】:How to read a media file from .py file using Django?如何使用 Django 从 .py 文件中读取媒体文件?
【发布时间】:2010-04-21 02:52:15
【问题描述】:

我可以像这样读取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 目录读取文件?

【问题讨论】:

  • 相对路径问题?试试text = open('media/a.txt', 'rb').read()

标签: python django file-io


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我认为 OP 没有提及 GAE。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多