OVH Cloud OVH Cloud

lecture de fichier : offset d'une ligne

3 réponses
Avatar
Kupee
salut, je lis un fichier ligne par ligne a l'aide
de la méthode readline()
j'ai parfois besoin de connaitre l'offset de début de la ligne,
ya t'il un moyen ?
merci

3 réponses

Avatar
Eric Deveaud
Kupee wrote:
salut, je lis un fichier ligne par ligne a l'aide
de la méthode readline()
j'ai parfois besoin de connaitre l'offset de début de la ligne,
ya t'il un moyen ?


la methode tell() du filehandle sur lequel tu lis, avant lecture de la ligne

Eric

--
Chalut la foule , ça veut dire regardez ce que je vais répondre
à l'autre, déjà c'est une remarque méprisante envers quelqu'un qui ne
t'a rien fait
-+- Fr in GNU - Ch'est chcandaleux : che me chui fait inchulter ! -+-

Avatar
bruno at modulix
Kupee wrote:
salut, je lis un fichier ligne par ligne a l'aide
de la méthode readline()


Selon la version de Python que tu utilises, tu peux aussi itérer
directement sur l'objet file:

f = open('/some/file.txt')
for line in f:
do_something_with(line)
f.close()

j'ai parfois besoin de connaitre l'offset de début de la ligne,
ya t'il un moyen ?


pour quelle définition de 'offset' ?

Si ce que tu veux est le numéro de la ligne, tu a le choix entre
utiliser enumerate(iterable) -> (int, object):

f = open('/some/file.txt')
for numline, line in enumerate(f):
do_something_with(numline, line)
f.close()

ou maintenir toi-même le compteur:

numline = -1
while True:
numline += 1
line = f.readline()
if not line:
break
do_something_with(numline, line)

Sinon, regarde la réponse de Eric.

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
Kupee
Kupee wrote:
salut, je lis un fichier ligne par ligne a l'aide
de la méthode readline()


Selon la version de Python que tu utilises, tu peux aussi itérer
directement sur l'objet file:

f = open('/some/file.txt')
for line in f:
do_something_with(line)
f.close()

j'ai parfois besoin de connaitre l'offset de début de la ligne,
ya t'il un moyen ?


pour quelle définition de 'offset' ?

Si ce que tu veux est le numéro de la ligne, tu a le choix entre
utiliser enumerate(iterable) -> (int, object):

f = open('/some/file.txt')
for numline, line in enumerate(f):
do_something_with(numline, line)
f.close()

ou maintenir toi-même le compteur:

numline = -1
while True:
numline += 1
line = f.readline()
if not line:
break
do_something_with(numline, line)

Sinon, regarde la réponse de Eric.


Merci a vous deux, la méthode d'Eric me plait bien avec le tell() car je
coupe ensuite le fichier dans certains cas, mais je note aussi ta
réponse qui a l'avantage de la simplicité