IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Erreur Python 3.7


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Erreur Python 3.7
    Bonjour à toutes et à tous,
    (je ne suis pas développeur )

    J'ai une erreur avec un script python :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      File "stock_yahoo.py", line 123, in main
        resp = requests.get(URL, data).json()['quoteResponse']['result']
      File "/usr/local/lib/python3.7/site-packages/requests/models.py", line 910, in json
        return complexjson.loads(self.text, **kwargs)
      File "/usr/local/lib/python3.7/json/__init__.py", line 348, in loads
        return _default_decoder.decode(s)
      File "/usr/local/lib/python3.7/json/decoder.py", line 337, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/usr/local/lib/python3.7/json/decoder.py", line 355, in raw_decode
        raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    J'ai regardé sur notre ami de recherche et j'ai fait quelques vérif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    pip3.7 list
    Package            Version
    ------------------ ---------
    certifi            2021.5.30
    charset-normalizer 2.0.5
    click              8.0.1
    idna               3.2
    importlib-metadata 4.8.1
    pip                21.2.4
    requests           2.26.0
    setuptools         40.8.0
    shiv               0.5.2
    simplejson         3.17.5
    typing-extensions  3.10.0.2
    urllib3            1.26.6
    zipp               3.5.0
    Je suis sous Debian 10.3, et j'ai installé pytho3.7 depuis les sources (sans aucune erreur de compil, du ./configure jusqu'au make install)

    Là je ne vois plus...

    En vous remerciant par avance, si quelqu'un peut m'aider
    Cordialement

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Es-tu sûr que cette url te retourne un texte formaté json et uniquement ça, donc pas du html contenant du json ?

    Tu peux nous mettre ici cette url ?

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par platune Voir le message
    (je ne suis pas développeur )
    Le message d'erreur dit juste que la réponse n'est pas du JSON.

    Avant de regarder ce que contient la réponse à une requête, on doit s'assurer qu'elle s'est exécutée correctement (en testant le code de retour donné dans l'attribut status_code de la réponse).

    Puis si la requête s'est bien déroulée, il n'y a pas de raison pour qu'elle retourne du JSON (plutôt que du HTML) sauf si c'est un site particulier ou qu'on fait explicitement la demande d'une réponse en JSON.

    Ce préalable étant satisfait, si on a toujours une erreur, JSON, c'est du texte qu'on peut accéder via l'attribut .text de la réponse...

    Dit autrement, développeur ou pas, ça ne va pas marcher parce que vous le valez bien mais parce que vous avez compris ce que font les outils et comment les utiliser.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Salut et merci pour vos réponses,

    L'url est https://query1.finance.yahoo.com/v7/...com&symbols=FB

    c'est bien du json.

    Le truc c'est que ça marchait jusqu'à cet été... je ne sais pas ce qu'il s'est passé, peut être une mise à jour du system ou autre... en tous cas l'url n'a pas changé et le module conky (car c'est de ça dont il s'agit, c'est pour avoir la bourse en temps réel sur conky ) n'a pas changé lui non plus.

    Si je fais sur l'url dans firefox, j'ai les infos...

    J'ai mis en pièce jointe également le script appelé par conky
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par platune Voir le message
    Le truc c'est que ça marchait jusqu'à cet été... je ne sais pas ce qu'il s'est passé, peut être une mise à jour du system ou autre...
    Qu'est ce qu'il y a dans les attributs .status_code et dans .text de la réponse?
    Chez moi un requests.get de cette URL me retourne un 403... et dans .text, j'ai "Forbidden".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    ?
    Je ne sais pas te répondre...
    Ce txt doit se trouver dans /tmp ?

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par platune Voir le message
    Je ne sais pas te répondre...
    Ce txt doit se trouver dans /tmp ?
    Au lieu d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resp = requests.get(URL, data).json()...
    vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    resp = requests.get(URL, data)
    print(resp.status_code)
    print(resp.text)
    et vous voyez...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Qu'est ce qu'il y a dans les attributs .status_code et dans .text de la réponse?
    Chez moi un requests.get de cette URL me retourne un 403... et dans .text, j'ai "Forbidden".

    - W
    Bonjour,
    Idem.
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Voici le résultat :


    ce que j'ai modifié dans le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        #resp = requests.get(URL, data).json()['quoteResponse']['result']
    resp = requests.get(URL, data)
    print(resp.status_code)
    print(resp.text)
        parseResp(resp)
    ce que ça retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    resp = requests.get(URL, data)
    print(resp.status_code)
    print(resp.text)  File "stock_yahoo.py", line 127
        parseResp(resp)
        ^
    IndentationError: unexpected indent
      File "stock_yahoo.py", line 127
        parseResp(resp)
        ^
    IndentationError: unexpected indent
    ^C

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>>  print(1)
      File "<stdin>", line 1
        print(1)
    IndentationError: unexpected indent
    >>>
    J'ai rajouté volontairement un espace devant mon print(1), voilà le résultat.

    Tu n'as pas d'espace devant ton parseResp(resp) ?

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par platune Voir le message
    IndentationError: unexpected indent
    Avec Python les instructions qui font partie d'un même block sont alignées sur la même colonne. C'est une ligne se terminant par ':' qui déclare l'ouverture d'un block et on "indente".

    La première instruction alignée sur le block précédent (dédent) termine le block courant.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    J'ai refait le copier/coller (il devait y avoir peut être un blanc)

    Maintenant j'ai autre chose...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "stock_yahoo.py", line 127, in <module>
        parseResp(resp)
      File "stock_yahoo.py", line 57, in parseResp
        if symbol.get('marketState') == 'PRE' and symbol.get('preMarketChange'):
    AttributeError: 'bytes' object has no attribute 'get'

  13. #13
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Ca signifie ici qu'une variable de type bytes n'a pas de méthode get existante.

    Les messages d'erreur Python sont quasi tous verbeux (plein de lignes) mais prenez le réflexe de partir de la dernière ligne du bas, puis de remonter ligne par ligne si besoin.


  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    d'accord, mais au final..?

    Le script n'a jamais été modifié.
    L'url et les infos sur le site donnant la bourse sont les mêmes.

    y a t-il des modules de python qui pourraient être mis en cause ?

    visiblement le pip list est apparemment complet...

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par platune Voir le message
    J'ai refait le copier/coller (il devait y avoir peut être un blanc)

    Maintenant j'ai autre chose..
    Et ce qui a été affiché par les "print", c'est quoi?

    Là de doutes façons, il est normal que la suite du programme se plante (puisqu'on n'a pas récupéré les informations nécessaires et que çà ne plante plus à cause du .json())

    Citation Envoyé par platune Voir le message
    y a t-il des modules de python qui pourraient être mis en cause ?
    Si le code n'a pas été changé, c'est peut être yahoo qui attend des informations (nouvelles?) qu'il ne reçoit pas. C'est pour çà qu'on commence par analyser le message d'erreur...

    Pour le reste, il est manifeste que vous n'avez pas écrit ce code. Il serait sage de vous adresser à cette personne.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Septembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci pour ce retour.
    Bon WE

Discussions similaires

  1. Erreur Python : list index out of range
    Par mmmppp dans le forum Général Python
    Réponses: 4
    Dernier message: 15/10/2011, 21h59
  2. Erreur python sur update PKG
    Par sglon dans le forum Glassfish et Payara
    Réponses: 0
    Dernier message: 06/07/2011, 11h59
  3. Erreur Python (avec Plomino et form)
    Par Invité dans le forum Général Python
    Réponses: 1
    Dernier message: 29/10/2010, 12h53
  4. Erreur Python (API Google charts)
    Par Invité dans le forum Général Python
    Réponses: 1
    Dernier message: 29/10/2010, 12h45
  5. erreur python dans un script .bat
    Par mr_samy81 dans le forum Général Python
    Réponses: 6
    Dernier message: 25/03/2009, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo