2016-12-06 1 views
0

J'ai recherché cette erreur, mais je n'ai pas trouvé comment la gérer. Je reçois l'erreur suivante, en essayant d'ouvrir un fichier:Erreur Python [Errno 36]: Nom de fichier trop long

[Errno 36] Nom de fichier trop long: «/var/www/FlaskApp/FlaskApp/templates/

Voici mon code simple. J'essaie d'ouvrir un fichier json et le rendre avec Flask dans un site Web:

@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) 

Quelqu'un connaît une solution? Merci d'avance.

+0

Pouvez-vous retirer 'os.path.join (SITE_ROOT, "statique/data", "btc.json")' et imprimer ce qu'il retourne? – TemporalWolf

Répondre

1

Vous passez la fonction render_template l'intégralité de votre fichier JSON, lorsqu'il recherche le nom de fichier d'un fichier modèle. C'est pourquoi vous obtenez un nom de fichier est une erreur trop longue.

Vous pouvez utiliser la fonction send_from_directory pour envoyer le fichier JSON. Importez la fonction première:

from flask import send_from_directory 

ensuite l'utiliser comme ceci:

@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 ça marche! Mais comment puis-je retourner une énorme chaîne qui ne provient pas d'un fichier de répertoire? – saitam