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 :

python exercices sur fichiers


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 46
    Points
    46
    Par défaut python exercices sur fichiers
    Hello tout le monde


    J'ai un petit soucis ... je vous explique. Je réalise un exercice sur python dont le but est d'à partir d'un fichier d'entrée crée un fichier de sortie (on suppose qu'on a le droit de l'écrire). Pour chaque ligne en entrée, le fichier de sortie comporte une ligne qui donne le numéro de ligne, le nombre de mots (séparés par des espaces) et le nombre de caractères. Pour cela , je réalise une boucle sur chaque ligne de mon fichier d'entrée qui est "i", ensuite pour avoir le nombre de mots je les insère dans une liste qui se nomme liste et je compte le nombre de fois qu'il y a un espace +1 ce qui me donnera le nombre de mots par ligne. Pour finir pour obtenir le nombre de caractères mon idée est de simplement enlever tous les espaces pour ensuite afficher la longueur de la chaine.

    Python me dit que j'ai une syntaxe invalid je ne comprends pas du tout si quelqu'un peut m'éclairer ce serait sympa


    merci d'avance


    PS: je code sur du python 3

    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
    17
    18
    19
    20
     
     
     
     
    def comptage(entree, sortie):
     
    	e=open(entree,'r') 
    	s=open(sortie,'r')
    	for i in e:
     
    		liste=[]
    		liste=[i]
     
    		s.write("{}, {}, {}\n".format(i,strip(liste).count(" ")+1,len(liste.replace(" ","")))
     
    	s.close()
    	e.close()
     
     
    comptage('essai_bis.txt', 'essai_bis_sortie.txt')


    Vaness

  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,

    1- Tu ouvres ton fichier de sortie en lecture au lieu de écriture.
    2- liste=[] ne sert à rien
    3- liste=[i] ne change pas ta ligne en liste de mots, pour ça il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    words = i.strip().split(' ')
    4- strip(liste) strip est une méthode de string pas une fonction
    5- Tu peux compter les caractères avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    characters = len(''.join(words))
    Après on verra.

  3. #3
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    Merci VinsS pour ta réponse. Mon fichier de sortie est deja en lecture ( avec 'r'). et aussi j'ai oublié de précisé j'ai invalid syntax pour la ligne s.close().

    j'ai modifié mon code et j'ai la meme erreur sur la meme ligne

    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
    17
    18
    def comptage(entree, sortie):
     
    	e=open(entree,'r') 
    	s=open(sortie,'r')
    	for i in e:
     
     
    		liste=i.strip().split(' ')
     
    		"""s.write("{}, {}, {}\n".format(i,len(liste),len(' '.join(i.strip()))"""
    		print (i)
    		print (liste)
     
    	s.close()
    	e.close()
     
     
    comptage('D:/Users/kelmir/Documents/MOOC/essai_bis.txt', 'D:/Users/kelmir/Documents/MOOC/essai_bis_sortie.txt')

    merci


    Vaness

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    il n'est pas question de lire le fichier de sortie, mais d'y écrire en ajoutant des lignes.
    =>
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    Merci Nbah pour ta réponse. Effectivement avec le 'a' mon fihcier de sortie se crée mais toujours lee probleme de syntaxe as tu une idée?
    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
    17
    18
     
    def comptage(entree, sortie):
     
    	e=open(entree,'r') 
    	s=open(sortie,'a')
    	for i in e:
     
     
    		liste=i.strip().split(' ')
     
    		s.write("{}, {}, {}\n".format(i,len(liste),len(' '.join(i.strip()))
     
     
    	s.close()
    	e.close()
     
     
    comptage('D:/Users/kelmir/Documents/MOOC/essai_bis.txt', 'D:/Users/kelmir/Documents/MOOC/essai_bis_sortie.txt')



    Vaness

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par vanessa75 Voir le message
    Effectivement avec le 'a' mon fihcier de sortie se crée mais toujours lee probleme de syntaxe as tu une idée?
    Lorsque vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		s.write("{}, {}, {}\n".format(i,len(liste),len(' '.join(i.strip()))
    il faut compter les '(' et écrire autant de ')' pour que l'instruction se termine.

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

  7. #7
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    merci wiztricks pour ton conseil. Effectivement il me manquait un parenthèse mais j'ai toujours la même erreur. je ne comprends aps pourquoi

    Vaness

  8. #8
    Membre du Club
    Femme Profil pro
    Architecte technique
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    merci wiztricks pour ton conseil. Effectivement il me manquait deux parenthèses. Merci beaucoup




    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
    17
    def comptage(entree, sortie):
     
    	e=open(entree,'r') 
    	s=open(sortie,'a')
    	nombre=0
     
    	for i in e:
    		nombre+=1
     
    		liste=i.strip().split(' ')
     
    		s.write("{}, {}, {}\n".format(nombre,len(liste),len("".join(liste))))
     
     
     
    	s.close()
    	e.close()

    Vaness

+ Répondre à la discussion
Cette discussion est résolue.

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