Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/11/2020, à 10:58

chris7522

not _io.TextIOWrapper ! (python)

Bonjour a toutes et a tous ,
    Je voulais :
         Ecrire une fonction comptage , qui prenne en argument un nom de fichier d'entrée ( il se trouve ici dans mon /home/chris/Bureau/Essai ) et un nom de fichier de sortie .
         Le fichier d'entrée est encodé en UTF-8 .
         Le fichier d'entrée est laissé intact .
         Pour chaque ligne en entrée, le fichier de sortie comporte une ligne qui donne le numéro de ligne, le nombre de mots , le nombre de caractères (y compris la fin de ligne), et la ligne d'origine.

Je maitrise tres peu mon sujet mais j'aimerai bien savoir comment faire pour que ca puisse fonctionner ,j'ai éssayé de faire ceci :

def comptage(in_filename, out_filename):
    with open(in_filename, encoding='utf-8') as in_file:
        with open(out_filename, 'w', encoding='utf-8') as out_file:
            lineno = 1
            for line in in_file:
                nb_words = len(line.split())
                nb_chars = len(line)
                out_file.write(f"{lineno}:{nb_words}:{nb_chars}:{line}")
                lineno += 1
sortie = open('out_filename','w',encoding='utf-8')
entree = open('/home/chris/Bureau/Essai/essai.txt',encoding='utf-8')
comptage(entree,sortie)

Hors ligne

#2 Le 11/11/2020, à 11:15

pingouinux

Re : not _io.TextIOWrapper ! (python)

Bonjour,
Essaye ceci :

def comptage(in_filename, out_filename):
    with open(in_filename, encoding='utf-8') as in_file:
        with open(out_filename, 'w', encoding='utf-8') as out_file:
            lineno = 1
            for line in in_file:
                nb_words = len(line.split())
                nb_chars = len(line)
                out_file.write(f"{lineno}:{nb_words}:{nb_chars}:{line}")
                lineno += 1
sortie = 'out_filename'
entree = '/home/chris/Bureau/Essai/essai.txt'
comptage(entree,sortie)

Hors ligne

#3 Le 11/11/2020, à 20:51

chris7522

Re : not _io.TextIOWrapper ! (python)

Merci . Il n'y a plus de message d'erreur mais il ne se passe rien non plus . Il y a quelque chose que je n'ai pas fait comme il faut ...

Hors ligne

#4 Le 11/11/2020, à 21:14

pingouinux

Re : not _io.TextIOWrapper ! (python)

chris7522 #3 a écrit :

Il y a quelque chose que je n'ai pas fait comme il faut

Il y a des chances…

$ cat script.py
import sys
entree=sys.argv[1]
sortie=sys.argv[2]

def comptage(in_filename, out_filename):
    with open(in_filename, encoding='utf-8') as in_file, open(out_filename, 'w', encoding='utf-8') as out_file:
            lineno = 1
            for line in in_file:
                nb_words = len(line.split())
                nb_chars = len(line)
#               out_file.write(f"{lineno}:{nb_words}:{nb_chars}:{line}")
                out_file.write("%s:%s:%s:%s"%(lineno,nb_words,nb_chars,line))
                lineno += 1

comptage(entree,sortie)
$ cat i
ligne 1   suite de la ligne 1
ligne 2   suite de la ligne 2
ligne 3   suite de la ligne 3
ligne 4   suite de la ligne 4
python3 script.py i o
$ cat o
1:7:30:ligne 1   suite de la ligne 1
2:7:30:ligne 2   suite de la ligne 2
3:7:30:ligne 3   suite de la ligne 3
4:7:30:ligne 4   suite de la ligne 4

Hors ligne

#5 Le 11/11/2020, à 22:21

chris7522

Re : not _io.TextIOWrapper ! (python)

Merci de ton aide .
Je crois que je vais poursuivre mon apprentissage , j'ai encore beaucoup a apprendre , car je pige pas tout . smile

Hors ligne

#6 Le 12/11/2020, à 10:40

chris7522

Re : not _io.TextIOWrapper ! (python)

Je voudrai quand meme savoir ce que signifie et ce que permet de faire sys.argv[ ]  dans ton exemple ?

Dernière modification par chris7522 (Le 12/11/2020, à 10:41)

Hors ligne

#7 Le 12/11/2020, à 12:20

pingouinux

Re : not _io.TextIOWrapper ! (python)

chris7522 a écrit :

Je voudrai quand meme savoir ce que signifie et ce que permet de faire sys.argv[ ]  dans ton exemple ?

Cela permet de lire les paramètres qui suivent le nom du script lors de l'appel. Ici les noms des fichiers d'entrée et de sortie, respectivement i et o.

Hors ligne