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 :

Code qui marche si je le tape ligne par ligne dans la console mais pas si je l'exécute


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    ceo
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ceo

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut Code qui marche si je le tape ligne par ligne dans la console mais pas si je l'exécute
    Bonjour,

    j'ai un pb que je trouve vraiment bizarre, j'ai un code qui marche si je l'écris ligne par ligne dans la console, mais si je le copie-colle ou l'exécute directement en appelant le nom du fichier dans le bash il y a des erreurs (différentes qui plus est) :

    le code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    notes = open('notes.txt', 'r')
    moyennes = open('moyennes.txt', 'w') 
    dico = {}
    for line in notes:
      liste = line.split()
      for x in range (1, len(liste)):
        dico[liste [0]] = dico.get(liste[0], 0) + int(liste[x])
    for z in dico: dico[z] = dico[z]/float(len(liste) - 1)
    for z in dico: 
      moyennes.write(z + ' : ' + repr(dico[z]) + '\n')
    notes.close()
    moyennes.close()

    Quand je copie-colle d'un coup, j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ... for z in dico: dico[z] = dico[z]/float(len(liste) - 1)
      File "<stdin>", line 5
        for z in dico: dico[z] = dico[z]/float(len(liste) - 1)
          ^
    SyntaxError: invalid syntax


    Et quand je l'exécute en appelant le nom du fichier dans le bash, j'ai une erreur encore plus surprenante à la première ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    prog.py: ligne 1: Erreur de syntaxe près du symbole inattendu « ( »
    prog.py: ligne 1: `notes = open('Bureau/langagesprog/notes.txt', 'r')'

    Merci d'avance à ceux qui prendront le temps de me répondre.

  2. #2
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Tu dois l'appeler avec python sinon il s'exécute comme du bash ce qui explique l'erreur de symbole inattendu.
    Ou bien tu rajoutes au début de ton code le shebang qui convient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #! /usr/bin/python
    et tu le rend exécutable.

  3. #3
    Membre confirmé
    Profil pro
    ceo
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ceo

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut
    Merci de ta réponse,
    bon cette question doit être énormément posée mais je ne trouve pas comment trouver le chemin de python sur mon PC...

    j'ai essayé :
    #! simon/local/bin/python
    #! simon/bin/python
    #! simon/bin/env python
    et #! simon/bin/env

    mais ça ne fonctionne pas;

    et j'ai vu qu'en tapant import sys puis print sys.executable on pouvait le trouver,
    mais j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    simon@simon-VirtualBox:~$ import sys
    Le programme 'import' peut être trouvé dans les paquets suivants*:
     * imagemagick
     * graphicsmagick-imagemagick-compat
    Essayez*: sudo apt-get install <paquet sélectionné>
    simon@simon-VirtualBox:~$ 
    simon@simon-VirtualBox:~$ print sys.executable
    Warning: unknown mime-type for "sys.executable" -- using "application/octet-stream"

  4. #4
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Meuh non, sous Linux tu ne dois pas donner le chemin de Python, utilise textuellement ce que je t'ai montré comme code.

    Tu refais la même erreur ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    simon@simon-VirtualBox:~$ import sys
    Le programme 'import' peut être trouvé dans les paquets suivants*:
    ...
    Ce n'est pas l'import de Python que bash comprend ici !


    Tapes simplement ceci dans ta console et regardes le résultat:
    décidément trop simple Linux ...

  5. #5
    Membre confirmé
    Profil pro
    ceo
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ceo

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut
    Oui oui j'avais bien compris et ça marche avec la ligne de commande python lenomduprog, merci.
    Et je sais ce qui se passe quand je tape juste python dans la console, je m'en suis servi pour écrire ce code et l'interpréter pas à pas.

    C'est le shebang qui convient à mettre dans mon fichier pour pouvoir l'exécuter directement que je ne trouve pas!
    Le #! /usr/bin/python ne marche pas.

    Merci d'avance

  6. #6
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Tu es sur que c'est le shebang qui ne fonctionne pas ?

    Fais un copier-coller du traceback complet de l'erreur, qu'on voie ça.

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/09/2009, 13h00
  2. qui peux m'expliquer ce code ligne par ligne merci
    Par superuser dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 08/04/2008, 11h25
  3. code qui marche sur firefox et pas sur IE7
    Par taka10 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/03/2007, 11h59
  4. Assistance au code qui marche plus?
    Par bslota dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/03/2007, 14h40
  5. Code qui marche, mais pas la mise à jour
    Par Cablan dans le forum Access
    Réponses: 7
    Dernier message: 24/10/2005, 17h09

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