Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] Les fichiers

Exercice sur les fichiers

Sujet résolu
18 juillet 2008 à 17:43:04

Bonjour à tous,

Je suis actuellement en train d'apprendre Python, avec le tutoriel : "Apprendre à programmer avec Python" de G.Swinnen.J'en suis au chapitre 9, sur les fichiers, et je veut faire l'exercice 9.1 : Dont voici l'énoncé :

Citation : énoncé


Ecrivez un script qui permette de créer et de relire aisément un fichier texte. Votre programme demandera d'abord à l'utilisateur d'entrer le nom du fichier. Ensuite il proposera le choix, soit d'enregistrer de nouvelles lignes de texte, soit d'afficher le contenu du fichier.
L'utilisateur devra pouvoir entrer ses lignes de texte succesives en utilisant simplement la touche <Entrer> pour les séparer les unes des autres. Pour terminer le entrée, il lui d'entrer une ligne vide.
L'affichage ducontenu devra montrer les lignes du fichier séparées les unes des autres de la manière la plus naturelle (les codes de fin de ligne ne doivent pas apparaître).



J'arrive a demander le nom du fichier, a proposer un choix, a écrire et lire dans le fichier, et gérer les exceptions


Mais je ne trouve pas la solutions pour que l'utilisateur du programme puis entrer plusieurs ligne, j'ai commencer à penser a une boucle mais je voit pas comment, ensuite je ne voit pas du tout comment séparé les ligne des unes des autres lors de la lecture. Et enfin comment faire pour que l'utilisateur puisse entrer du texte puis séparé les ligne par la touche entrer.


Voici mon code :

#**- coding.utf-8 -**

##############
#exercice 9.1#
##############

from os import chdir
chdir("C:\Documents and Settings\Administrateur\Bureau")

print "bienvenue dans le programme d'écriture et re-lecture d'un fichier"
nomFichier = raw_input("Veuillez entrer le nom du fichier:")
print "Voulez vous écrire, ou lire le fichier ?"
print "1:écrire"
print "2:lire"
choix = input()

if choix == 1 :
        obFichier = open(nomFichier, "w")
        txt = raw_input("entrer votre texte:")
        obFichier.write(txt)
        obFichier.close()
else :
        try :
                oFi = open(nomFichier, "r")
                lecture = oFi.read()
                print lecture
                oFi.close()
        except :
                print "le nom du fichier que vous avez spécifié n'exsite pas"


Voilà je pense que tout y est, n'hésiter si vous avez besoin de plus d'information, j'espère avoir été suffisamment clair.

Merci d'avance pour votre aide.

Thealone.
  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2008 à 18:16:18

Il suffit de faire avec une boucle et un accumulateur : en gros :
Accumulateur <- ""
Texte = lire ligne
Tant que Texte n'est pas une ligne vide
    Accumulateur <- Accumulateur + Texte
    Texte = lire ligne
Fin boucle


Essaie de comprendre ça, puis de le traduire en Python, tu verras, ça va tout seul ;) .
  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2008 à 18:28:34

Citation : wgmpgp

Il suffit de faire avec une boucle et un accumulateur : en gros :

Accumulateur <- ""
Texte = lire ligne
Tant que Texte n'est pas une ligne vide
    Accumulateur <- Accumulateur + Texte
    Texte = lire ligne
Fin boucle



Essaie de comprendre ça, puis de le traduire en Python, tu verras, ça va tout seul ;) .



salut,

:-° C'est quoi un Accumulateur ? :o
  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2008 à 18:44:59

C'est juste une variable comme les autres, que tu utilises pour accumuler le contenu d'autres variables.
  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2008 à 18:53:59

re-bonjour,

Voila j'ai améliorer le code, en y réflechissant de plus prêt la réponses était simples, ton idées ma provoquer un déclic ^^ , Merci beaucoup.
Le programme demande l'écriture du fichier tant que celui ci n'est pas vide, et il lit également un fichier ligne par ligne.

Le problème qui reste est le problème de la touche entrer, je trouve toujours pas la solution :

il faut que la touche entrer soit remplacer par \n lors de l'interpretation, je voit aps comment faire mais j'y réflechie.


Aufaite voila le nouveau code :

#**- coding.utf-8 -**

##############
#exercice 9.1#
##############

from os import chdir
chdir("C:\Documents and Settings\Administrateur\Bureau")

print "bienvenue dans le programme d'écriture et re-lecture d'un fichier"
nomFichier = raw_input("Veuillez entrer le nom du fichier:")
print "Voulez vous écrire, ou lire le fichier ?"
print "1:écrire"
print "2:lire"
choix = input()

if choix == 1 :
        obFichier = open(nomFichier, "a")
        while 1:
                txt = raw_input("entrer votre texte:")
                obFichier.write(txt)
                if txt == '':
                        break
        obFichier.close()
else :
        try :
                oFi = open(nomFichier, "r")
                while 1:
                        lecture = oFi.readline()
                        print lecture
                        if lecture =='':
                                break
                oFi.close()
        except :
                print "le nom du fichier que vous avez spécifié n'exsite pas"


EDIT : J'ai trouver la solution, c'est tout bête voici le code source, et l'exercice est enfin fini :
#**- coding.utf-8 -**

##############
#exercice 9.1#
##############

from os import chdir
chdir("C:\Documents and Settings\Administrateur\Bureau")

print "bienvenue dans le programme d'écriture et re-lecture d'un fichier"
nomFichier = raw_input("Veuillez entrer le nom du fichier:")
print "Voulez vous écrire, ou lire le fichier ?"
print "1:écrire"
print "2:lire"
choix = input()

if choix == 1 :
        obFichier = open(nomFichier, "a")
        while 1:
                txt = raw_input("entrer votre texte:")
                obFichier.write(txt)
                obFichier.write("\n")
                if txt == '':
                        break
        obFichier.close()
else :
        try :
                oFi = open(nomFichier, "r")
                while 1:
                        lecture = oFi.readline()
                        print lecture
                        if lecture =='':
                                break
                oFi.close()
        except :
                print "le nom du fichier que vous avez spécifié n'exsite pas"



Merci beaucoup !

:-° Aufaite si j'arive pas des petits exercices comme lui, dès le début sa veut dire que je suis mauvais ou pas ?..
  • Partager sur Facebook
  • Partager sur Twitter
18 juillet 2008 à 19:00:53

Il suffit de faire « obFichier.write(txt + '\n') » tout simplement ;) .

Sinon, si tu débutes c'est toujours normal d'avoir des difficultés, on ne peut pas tout savoir dès le début :p . Après ce genre de « déclics » ça vient avec la pratique et l'expérience.
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2021 à 12:47:29

@DelormeFlorentinKouassi Bonjour, merci de ne pas déterrer d'ancien sujet résolu.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter