Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester la fin d'un fichier

7 réponses
Avatar
thiebaut
Bonjour,

j'ai un script qui ouvre un fichier qui
lit chaque ligne et extrait chaque donnée.

Comment tester les ligne vides,
ainsi qu'une ligne vide en fin de fichier.
Qui me donne une erreur.

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

import string
print "Lecture de fichier"
fd = open('ssh.properties','r')

user = []
host = []

#On lit chaque ligne du fichier
for ligne in fd.readlines() :
if len(ligne) == 0 :
break
#On scinde la ligne en mot user et host
donnee = ligne.split()
#print donnee[0]
#print donnee[1]
#puis on ajoute les données dans les listes
user.append(string.capitalize(donnee[0]))
host.append(string.capitalize(donnee[1]))

#print 'user %s',user
fd.close()

Merci pour vos éclairages

olivier

7 réponses

Avatar
Amaury Forgeot d'Arc
Bonjour,

j'ai un script qui ouvre un fichier qui
lit chaque ligne et extrait chaque donnée.

Comment tester les ligne vides,
ainsi qu'une ligne vide en fin de fichier.
Qui me donne une erreur.

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

import string
print "Lecture de fichier"
fd = open('ssh.properties','r')

user = []
host = []

#On lit chaque ligne du fichier
for ligne in fd.readlines() :
if len(ligne) == 0 :
break
#On scinde la ligne en mot user et host
donnee = ligne.split()
#print donnee[0]
#print donnee[1]
#puis on ajoute les données dans les listes
user.append(string.capitalize(donnee[0]))
host.append(string.capitalize(donnee[1]))

#print 'user %s',user
fd.close()

Merci pour vos éclairages

olivier


Ton tutoriel est un peu vieux : maintenant, readlines est inutile ! Et
pas besoin de break.

Pour ta question: dans cette boucle, une ligne vide ne contient que le
caractère n:

for ligne in fd:
if ligne == 'n':
continue
....

--
Amaury

Avatar
thiebaut
Bonjour,

j'ai un script qui ouvre un fichier qui
lit chaque ligne et extrait chaque donnée.

Comment tester les ligne vides,
ainsi qu'une ligne vide en fin de fichier.
Qui me donne une erreur.

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

import string
print "Lecture de fichier"
fd = open('ssh.properties','r')

user = []
host = []

#On lit chaque ligne du fichier
for ligne in fd.readlines() :
if len(ligne) == 0 :
break
#On scinde la ligne en mot user et host
donnee = ligne.split()
#print donnee[0]
#print donnee[1]
#puis on ajoute les données dans les listes
user.append(string.capitalize(donnee[0]))
host.append(string.capitalize(donnee[1]))

#print 'user %s',user
fd.close()

Merci pour vos éclairages

olivier
Rmq Il est issu d'un tutoriel officiel python, vous aurez reconnu ...


olivier

Avatar
thiebaut

Bonjour,

j'ai un script qui ouvre un fichier qui
lit chaque ligne et extrait chaque donnée.

Comment tester les ligne vides,
ainsi qu'une ligne vide en fin de fichier.
Qui me donne une erreur.

#!/usr/bin/env python
#-*- coding: iso-8859-1 -*-

import string
print "Lecture de fichier"
fd = open('ssh.properties','r')

user = []
host = []

#On lit chaque ligne du fichier
for ligne in fd.readlines() :
if len(ligne) == 0 :
break
#On scinde la ligne en mot user et host
donnee = ligne.split()
#print donnee[0]
#print donnee[1]
#puis on ajoute les données dans les listes
user.append(string.capitalize(donnee[0]))
host.append(string.capitalize(donnee[1]))
#print 'user %s',user
fd.close()

Merci pour vos éclairages

olivier



Ton tutoriel est un peu vieux : maintenant, readlines est inutile ! Et
pas besoin de break.
Ok, et quels sont donc les bonnes méthodes ...


Pour ta question: dans cette boucle, une ligne vide ne contient que le
caractère n:

for ligne in fd:
if ligne == 'n':
continue
....

Merci


olivier


Avatar
R12y
Amaury Forgeot d'Arc :

maintenant, readlines est inutile


Tu m'interesses. Quels sont les nouvelles méthodes?

--

http://www.onirik.net/article.php3?id_article7
http://www.maemo.org/platform/docs/howtos/howto_new_application.html
http://www.linuxdevices.com/files/article057/index.html

Avatar
Eric Jacoboni
R12y writes:


maintenant, readlines est inutile


Tu m'interesses. Quels sont les nouvelles méthodes?


Dire que readlines est inutile est peut-être un peu exagéré. C'est
xreadlines qui est déprécié, par contre.

Après, tout dépend de ce qu'on veut faire...

readlines permet de lire d'un seul coup un fichier en mémoire (en
laissant le n à la fin de chaque ligne). On peut concevoir que ça
peut être pratique dans certains cas.

Après, si on veut lire ligne par ligne, le plus simple consiste à
itérer sur l'objet fichier lui-même :

fichier = open('monfic.txt')
for ligne in fichier:
traiter(ligne)


--
Eric Jacoboni, ne il y a 1441329131 secondes


Avatar
Eric Deveaud
thiebaut wrote:
Bonjour,

j'ai un script qui ouvre un fichier qui
lit chaque ligne et extrait chaque donnée.

Comment tester les ligne vides,
ainsi qu'une ligne vide en fin de fichier.
Qui me donne une erreur.


en lisant la doc de readline, readlines etc il est dit qu'une ligne correspond
a quelquechose coincee entre 2 'n'

il est meme precise que "Retain newline"

donc ce que tu nomme ligne vide est une ligne qui ne contient pas d'autre
caracteres que ce fameux 'n'

donc la seule possiblite d'avoir une chaine vide au cours de la lecture
est d'arriver a la fin du fichier. c'est d'ailleur precise par la doc


Eric
--
Mettre d'un coté ceux qui nous pompent l'air, de l'autre ceux qui
brassent du vent. Nous obtiendrons un Usenet climatisé, c'est ça le
génie français. Ca risque même d'être un peu trop ventilé.
-+- MP in <http://neuneu.mine.nu> : Clim et châtiment -+-

Avatar
Eric Deveaud
R12y wrote:
Amaury Forgeot d'Arc :

maintenant, readlines est inutile



en plus d'etre inutile, ou plus exactement pas dnas la python way, readlines
peut etre source de problemes.

bien penser a deux fois aux type de fichier qu'on va traiter en utilisant
readlines, et se souvenir qu'on le charge d'un bloc en memoire, preferer
xreadlines qui est maintenant "deprecated"

Tu m'interesses. Quels sont les nouvelles méthodes?


les fh embarquent un iterateur.

fh = open(file, mode)
for line in fh:
# du boulot

Eric qui prie pour la dispartion de readlines
--
Mettre d'un coté ceux qui nous pompent l'air, de l'autre ceux qui
brassent du vent. Nous obtiendrons un Usenet climatisé, c'est ça le
génie français. Ca risque même d'être un peu trop ventilé.
-+- MP in <http://neuneu.mine.nu> : Clim et châtiment -+-