lecture fichier.txt

Le
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',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,-,-
______________________________________________________________
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
alainL
Le #662089
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
yves
Le #662088
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

Pierre Quentel
Le #662087
On Dec 30, 5:22 pm, "alainL"
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

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


Toujours aussi astucieux :-)
Bonnes fêtes Pierre

Salvatore

Méta-MCI \(MVP\)
Le #664914
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
Publicité
Poster une réponse
Anonyme