Ошибка Python [Errno 36]: слишком длинное имя файла.

Я искал эту ошибку, но не мог понять, как с ней справиться. При попытке открыть файл я получаю следующую ошибку:

[Errno 36] Слишком длинное имя файла: '/ var / www / FlaskApp / FlaskApp / templates /

Вот мой простой код. Я пытаюсь открыть файл 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)

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


person sunwarri0r    schedule 06.12.2016    source источник
comment
Вы можете вытащить os.path.join(SITE_ROOT, "static/data", "btc.json") и распечатать то, что он вернет?   -  person TemporalWolf    schedule 06.12.2016


Ответы (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")
person Kevin Schellenberg    schedule 06.12.2016
comment
Спасибо, это работает! Но как мне вернуть огромную строку, которая поступает не из файла каталога? - person sunwarri0r; 06.12.2016