Django:IOError [Errno 2] 使用 python 读取 JSON 文件路径时没有这样的文件或目录

Posted

技术标签:

【中文标题】Django:IOError [Errno 2] 使用 python 读取 JSON 文件路径时没有这样的文件或目录【英文标题】:Django: IOError [Errno 2] No such file or directory while Reading JSON file path using python 【发布时间】:2017-11-20 01:50:30 【问题描述】:

我在尝试从本地 django 应用程序读取 JSON 文件时遇到 No such file or directory 错误。

请注意我尝试了 *** 上提到的大部分方法。所以说重复之前要三思……

这是我的代码,

尝试1:

json_data = os.path.join(BASE_DIR, STATIC_URL, "utils/config/my_json")
data = open(json_data,'r')

尝试2:

json_data = os.path.join(STATIC_URL, "utils/config/my_json")
data = open(json_data,'r')

尝试 3:

json_data = os.path.join(BASE_DIR, STATIC_URL, "utils/config/my_json")
with open(json_data,'r') as file:
    print file

我收到此错误,

IOError at /my_url/
[Errno 2] No such file or directory: '/static/utils/config/my_json'

执行os.path.join()后的文件url为'/static/'

我的代码中的问题在哪里?在我的情况下如何读取 JSON?

【问题讨论】:

你能显示“BASE_DIR”,“STATIC_URL”的完整路径吗? 【参考方案1】:

您可以尝试以下方法吗:

json_data = os.path.join(BASE_DIR, 'static', "utils/config/my_json")
data = open(json_data,'r')

请在 BASE_DIR 目录中创建一个名为 static 的文件夹。 我猜由于 STATIC_URL 以 / 开头,它在根目录中搜索

【讨论】:

这种方法有效。即使我累了,“静态/实用程序/..”但我想知道它可以在服务器上工作吗?因为当它被部署时,静态会变成静态文件。它适用于这两种情况吗? 是的,它会起作用的。从磁盘读取文件与其 URL 无关。但要正确配置。我就是这样做的。 STATIC_URL = '/static/'; STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ); STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')【参考方案2】:

您在应该使用 STATIC_ROOT 的地方使用 STATIC_URL。从磁盘读取文件与它的 URL 无关。

首先请注意,静态目录可能已经预先添加了 BASE_DIR。另请注意,这根本不是一个真正的静态文件,可能应该只是在您的代码目录中。

【讨论】:

STATIC_ROOT 具有 'staticfiles' 而不是 'static' 所以,我认为它可能适用于不在我本地 wsgi 服务器中的服务器上。我说的对吗?

以上是关于Django:IOError [Errno 2] 使用 python 读取 JSON 文件路径时没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

IOError:[Errno 2]没有这样的文件或目录(当它确实存在时)Python [重复]

open() 给出 FileNotFoundError/IOError: Errno 2 No such file or directory

以“w”模式打开文件:IOError:[Errno 2]没有这样的文件或目录

Python IOError 中的错误:[Errno 2] 没有这样的文件或目录:'data.csv' [重复]

Python 请求:IOError:[Errno 22] 无效参数

如何获取 IOError 的 errno?