Menu

Afficher contenue d'un fichier [Résolu]

Messages postés
290
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
27 juin 2019
-
bonjour,

je cherche a afficher le contenue entier d'un fichier.json sur une page web (actuellement en local)
mais je n'y parvient pas ...

je le réclame de cette manière : "0.0.0.0:5000\about.json"

toute mes tentative sont resté sans résultat.
voici mon code qui d’après moi s’avère être le plus proche de ce que je recherche mais qui reste bugé.

import json


@app.route("/about.json")
def about():
    with open('about.json') as json_data:
        data_dict = json.load(json_data)
    txt = json.dumps(data_dict)
    html = "{txt}"
    return html.format(txt=txt)


et voici les erreurs reçus (une partie uniquement car trop nombreuse) :

 File "app.py", line 27, in about
web_1    |     data_dict = json.load(json_data)
web_1    |   File "/usr/local/lib/python3.4/json/__init__.py", line 268, in load
web_1    |     parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
web_1    |   File "/usr/local/lib/python3.4/json/__init__.py", line 318, in loads
web_1    |     return _default_decoder.decode(s)
web_1    |   File "/usr/local/lib/python3.4/json/decoder.py", line 343, in decode
web_1    |     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
web_1    |   File "/usr/local/lib/python3.4/json/decoder.py", line 359, in raw_decode
web_1    |     obj, end = self.scan_once(s, idx)
web_1    | ValueError: Expecting ',' delimiter: line 25 column 20 (char 767)
web_1    | 172.18.0.1 - - [03/Oct/2018 18:55:55] "GET /about.json HTTP/1.1" 500 -


merci de votre aide, j’espère que une fois de plus vous parviendrais a me sortir de cette galére
Afficher la suite 

3 réponses

0
Merci
Bonsoir.

Une url s'écrit avec des slashs et non des backslashs.

Et lorsque tu dis que tu n'y parviens pas, tu n'as même pas une erreur 404 ?
Quel serveur ?
Simple erreur d'inattention pour l'URL désolé.

Je reçois une erreur interne sur ma page.
Elle n'est pas hébergé sur un serveur mais en local.

Merci de ton aide
> Astrocurieux -
Je ne comprends pas, l'adresse http://0.0.0.0/ correspond bien normalement à un serveur local en localhost.

Et puis je ne comprends pas non plus le rapport avec python, tu devrais préciser bien plus de choses, car pour le moment, ton problème est vague.
Commenter la réponse de jortu
Messages postés
290
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
27 juin 2019
2
0
Merci
pour être plus precis voici mon code complet:

j'essaie d'utiliser les conteneurs Docker, j'ai donc un docker-compose et une app.py que voici :

from flask import Flask
from redis import Redis, RedisError
import os
import socket
import json

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

@app.route("/about.json")
def about():
    with open('about.json') as json_data:
        data_dict = json.load(json_data)
    txt = json.dumps(data_dict)
    html = "{txt}"
    return html.format(txt=txt)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)


ce code me crée une page web en 0.0.0.0:5000 et si j'ajoute a l'url ceci : 0.0.0.0:5000/about.json
je desire afficher ce que contient mon fichier about.json contenue a la racine de mon projet.
et c'est ici que ca bug ...
Salut,

Donc, oui, tu as bien un serveur local sur le port 5000 ^^

J'ai testé ton script et cela fonctionne parfaitement.
http://0.0.0.0:5000/about.json affiche bien chez moi le contenu du fichier, bon l'affichage est pourri :D, autant filer directement le fichier json brut au navigateur puisqu'il peut l'afficher bien formaté (tout du moins firefox)

Donc je soupçonne que le chemin vers ton fichier json n'est pas correct.
Et quand tu dis que ça bug, il se passe quoi au juste ? Il faut être plus précis.
astrocurieux
Messages postés
290
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
27 juin 2019
2 -
quand je réclame mon fichier j'obtient ca sur ma page web : Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

je me suis pas trompé dans le chemin du fichier, c'est agréable de savoir que ca fonctionne chez toi mais du coup je suis deg que ce soi pas la meme de mon coté.

comment ferais tu pour directement fournir le fichier au navigateur ? tu peut me faire un petit exemple ?
Commenter la réponse de astrocurieux
Messages postés
4867
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
25 juin 2019
829
0
Merci
'lut,
ton fichier
json
est invalide/corrompu.
De plus, tu l'interprètes pour le re-sortir tel quel, puis tu utilises
.format()
pour rien.
Essaie tout simplement:
@app.route("/about.json")
def about():
    with open('about.json', 'rb') as json:
        return Response(json.read(), mimetype='application/json')
> astrocurieux
Messages postés
290
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
27 juin 2019
-
Bah oui, tu as deviné, c'est bien ton fichier json le problème, d'ailleurs pour t'en assurer, ouvre le avec ton navigateur sans passer par ton serveur.

Avec un fichier syntaxiquement incorrect, firefox le signale.

Par exemple.
SyntaxError: JSON.parse: expected ',' or ']' after array element at line 38 column 1 of the JSON data
astrocurieux
Messages postés
290
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
27 juin 2019
2 -
quand je fait un clic/glisser sur mon navigateur avec mon fichier il me l'ouvre tel qu'elle pourtant ....
je vais creusé dans cette direction
astrocurieux
Messages postés
290
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
27 juin 2019
2 -
il manque une virgule dans mon fichier.json ....
mon affichage ce fait correctement meme si avec ma fonction c'est effectivement pas terrible du tout comme le disait jortu.

je ne parvient pas a tester la tienne j'ai cette erreur :

NameError: name 'Response' is not defined


as tu un import ou quelque chose d'autre a ajouter ? je débute totalement désolé si c'est evident....
ElementW
Messages postés
4867
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
25 juin 2019
829 > astrocurieux
Messages postés
290
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
27 juin 2019
-
from flask import Response
astrocurieux
Messages postés
290
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
27 juin 2019
2 -
merci c'est tout bon
Commenter la réponse de ElementW