2014-01-15 122 views
8

我正在努力如何在烧瓶中加载本地json。烧瓶本地json

from flask import Flask, render_template, json, url_for 

def taiwan(): 
    json_data = open(url_for('static', filename="data/taiwan.json")) 
    data = json.load(json_data) 
    return render_template('taiwan.jade', data=data) 

这引发了IOError:没有这样的文件或目录:'/static/css/taiwan.json'。但它仍然存在。

任何建议

+0

SEO补充说:瓶中装入的数据文件,烧瓶装载本地文件,烧瓶打开数据文件。 – bahmait

+0

@kOssi:你可以接受你自己的答案来标记这个问题解决吗?这将有助于未来的读者。 – MERose

回答

9

我结束了与此:

import os 
from flask import Flask, render_template, url_for, json 

def showjson(): 
    SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) 
    json_url = os.path.join(SITE_ROOT, "static/data", "taiwan.json") 
    data = json.load(open(json_url)) 
    return render_template('showjson.jade', data=data) 
+0

这可能有助于下一个家伙:使用'app.root_path'。这是因为这个原因。 – dlite922

2

你应该用你的静态目录的路径,来获取文件,url_for获取绝对URI路径,而不是FS路径。试试这个

json_data = open(os.path.join(your_static_dir, "data", "taiwan.json"), "r")