2016-12-06 18 views
0

Я искал эту ошибку, но не смог узнать, как ее обрабатывать. Я получаю следующее сообщение об ошибке при попытке открыть файл:Ошибка Python [Errno 36]: Слишком длинное имя файла

[Errno 36] слишком длинное имя файла: «/ вар/WWW/FlaskApp/FlaskApp/шаблоны/

Вот мой простой код. Я пытаюсь открыть файл json и вынести его с помощью Flask на сайт:

@app.route("/showjson/") 
def showjson(): 
    SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) 
    data_in = open(os.path.join(SITE_ROOT, "static/data", "btc.json"), "r") 
    data_out = "" 
    for line in data_in: 
     data_out += line.rstrip() 
    data_in.close() 
    return render_template(data_out) 

Кто-нибудь знает решение? Спасибо заранее.

+0

Вы можете вытащить 'os.path.join (SITE_ROOT "статический/данные", "btc.json")' и распечатать, что он возвращает? – TemporalWolf

ответ

1

Вы передаете функцию render_template весь свой JSON-файл, когда он ищет имя файла шаблона. Вот почему вы получаете имя файла - слишком длинная ошибка.

Вы можете использовать функцию send_from_directory для отправки файла JSON. Импорт функции первого:

from flask import send_from_directory 

Затем используйте его следующим образом:

@app.route("/showjson/") 
def showjson(path): 
    SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) 
    return send_from_directory(os.path.join(SITE_ROOT, "static/data"), "btc.json") 
+0

Thx это работает! Но как я могу вернуть огромную строку, которая поступает не из файла каталога? – saitam