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' [重复]