Pages : 1
#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)
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 .
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)
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