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

lecture fichier.txt

5 réponses
Avatar
alainL
Bonjour,
J'essaie de lire un fichier texte, d'y sélectionner une ligne par le tri de
la première donnée [0] et d'afficher les données [1] et [2], mais ça ne sort
pas !
Voici mon code et un bout du fichier texte. Pouvez-vous me dire ce qui
cloche ??? Merci
(le fichier txt est lisible, je le lis avec un autre bout de code qui
affiche tout, mais sans tri)
AlainL
__________________________________________________________________
numerojour=now.strftime("%m%d") # lui, il sort : 1230 pour aujourd'hui par
exemple.

# lecture fichier fetes
fete=' '
anniv=' '
a=1
f=open('C:/Python25/fetes.txt','r')
while a<366 :
t=f.readline()
njour=t.split(',')[0]
if njour == numerojour:
fete=t.split(',')[1]
anniv=t.split(',')[2]
break
a=a+1

f.close()
........................................................
txt2 = Label(fen1, bg='yellow',width= 25, text='jour:'+ numerojour,
anchor='center')
txt3 = Label(fen1, bg='yellow',width=30,text='Fêter les ' +fete)
txt4 = Label(fen1, bg='yellow',text=anniv)
-----------------------------------------------------------

## fin du fichier fetes.txt

1227,Jean,-,-
1228,Yannick et Innocents,-,-
1229,David,anniv de Paul,-
1230,Roger,-,-
1231,Sylvestre,-,-
______________________________________________________________

5 réponses

Avatar
alainL
et si j'affiche la valeur de njour (a la sortie de la boucle) j'ai le jour
précédent soit 1229 pour aujourd'hui 1230....
Ca va me gâcher le réveillon :-((((
alainL
Avatar
yves
Le Sun, 30 Dec 2007 17:41:26 +0100, alainL a écrit:

Bonjour,

Ca va me gâcher le réveillon :-((((


Meuhh non.

Voici quelques biscuit, avec le module csv:

********************
# -*- coding: Latin-1 -*-
from datetime import datetime
from csv import reader

numerojourÚtetime.now().strftime("%m%d") # lui, il sort : 1230 pour aujourd'hui par exemple.

essai = reader(open('fetes.txt','r'))

for row in essai:
njour, fete, anniv, bof = row
print njour, fete, anniv, bof

print '*****'
essai = reader(open('fetes.txt','r'))
for row in essai:
njour, fete, anniv, bof = row
if njour == numerojour:
print row
print njour, fete, anniv, bof

print '*****'
essai = reader(open('fetes.txt','r'))
while True:
try:
print essai.next()
except StopIteration:
print "On est arrivé au bout des données"
break

**********
testé avec fetes.txt:

Bonjour,
J'essaie de lire un fichier texte, d'y sélectionner une ligne par le tri de
la première donnée [0] et d'afficher les données [1] et [2], mais ça ne sort
pas !
Voici mon code et un bout du fichier texte. Pouvez-vous me dire ce qui
cloche ??? Merci
(le fichier txt est lisible, je le lis avec un autre bout de code qui
affiche tout, mais sans tri)
AlainL
__________________________________________________________________
numerojour=now.strftime("%m%d") # lui, il sort : 1230 pour aujourd'hui par
exemple.

# lecture fichier fetes
fete=' '
anniv=' '
a=1
f=open('C:/Python25/fetes.txt','r')
while a<366 :
t=f.readline()
njour=t.split(',')[0]
if njour == numerojour:
fete=t.split(',')[1]
anniv=t.split(',')[2]
break
a=a+1

f.close()
........................................................
txt2 = Label(fen1, bg='yellow',width= 25, text='jour:'+ numerojour,
anchor='center')
txt3 = Label(fen1, bg='yellow',width0,text='Fêter les ' +fete)
txt4 = Label(fen1, bg='yellow',text=anniv)
-----------------------------------------------------------

## fin du fichier fetes.txt

1227,Jean,-,-
1228,Yannick et Innocents,-,-
1229,David,anniv de Paul,-
1230,Roger,-,-
1231,Sylvestre,-,-
____________________________________________________________
--
Yves

Avatar
Pierre Quentel
On Dec 30, 5:22 pm, "alainL" wrote:
Bonjour,


Bonjour,


# lecture fichier fetes
fete=' '
anniv=' '
a=1
f=open('C:/Python25/fetes.txt','r')
while a<366 :
t=f.readline()
njour=t.split(',')[0]
if njour == numerojour:
fete=t.split(',')[1]
anniv=t.split(',')[2]
break
a=a+1

f.close()


Vous pouvez écrire le même code de façon beaucoup plus "pythonique" :
- pas de compteur intermédiaire pour lire les lignes et tester la fin
de fichier
- une boucle "for ligne in fichier" plutôt que des readline()
- affectation de plusieurs variables à la fois (1ère et 3ème ligne)

========================= ======
fete,anniv = ' ',' '
for line in open('C:/Python25/fetes.txt'):
njour,fete,anniv,autre = line.rstrip().split(',')
if njour == numerojour:
break
========================= ======

Pierre

Avatar
Salvatore
Vous pouvez écrire le même code de façon beaucoup plus "pythonique" :
ou pythonesque ;-)


Toujours aussi astucieux :-)
Bonnes fêtes Pierre

Salvatore

Avatar
Méta-MCI \(MVP\)
Bonjour !

Pourquoi ne pas débuter 2008 avec les regex ?

Exemple :

import re
compilre=re.compile("^1229.*", re.IGNORECASE| re.MULTILINE)
for lig in compilre.finditer(open("fetes.txt","r").read()):
print lig.group().split(",")[1:3]
break

à noter que la dernière ligne ("break") serait à supprimer, s'il devait
y avoir plusieurs réponses.

@-salutations

Michel Claveau