1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
Welcome to our Education website, plz like our page facebook to support us. Thank You and wish you good navigation

python écrire une variable dans un fichier - ecrire dans un fichier python

abdelouafiMay 28, 2017

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      197
      Likes Received:
      9
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      TP: Les fichiers


      Dans ce TP, on propose de créer un répertoire téléphonique contenant les noms des personnes et leurs numéros de téléphones.

      Ce répertoire est représenté par un fichier texte nommé 'Contacts.txt '. Chaque ligne de ce fichier contient les données d'un seul contact et la séparation entre le nom et le numéro de téléphone est assurée par le caractère '#'.


      1. Ecrire la procédure CreerFichier () qui permet de créer ce fichier et met dans sa première ligne le nom et le numéro de téléphone du propriétaire du répertoire. Par exemple:('Mon_Tel#0611111111')


      2. Ecrire la procédure ajouterContact(nom,phone) qui ajoute les données d'une personne (nom, telephone) sur une ligne dans le fichier Contacts.txt. Si le numéro de téléphone ne contient pas dix chiffres une exception de type AssertionError sera levé


      3. Ecrire la fonction Recherche(nom) qui renvoi le numéro de la personne dont le nom est passé en paramètre. Si le nom de la personne n'existe pas dans le répertoire alors la fonction renvoi la constante None (rien).


      4. Ecrire la fonction modifierContact(nom,num) qui modifie le numéro du contact dont le nom est transmet en paramètre, cette fonction retourne True si la modification est effectuée correctement sinon False.


      5. Ecrire la procédure Copie() qui crée une copie du fichier Contacts.txt



      6. Ecrire la procédure affiche(nomFich) qui affiche à l'écran (ligne par ligne) les données de tous les contacts contenus dans le fichier nomFich. Si l'ouverture du fichier n'est pas effectuée avec succès une exception de type IOError sera levée


      7. Dans un répertoire téléphonique un numéro de téléphone doit exister une seule fois, on suppose que par erreur nous avons répété quelques numéros sous des noms différents. Ecrire la procédure suppDoublants(nomFich), qui affiche à l'écran les numéros en double avant de les supprimer.


      8. Ecrire la procédure Trier() qui permet de trier les contacts du fichier Contact.txt selon l'ordre alphabétique des noms
       
      Loading...
      Code:
                      ## CORRECTION TP : FICHIERS ##
      
      def CreerFichier () :
          F=open('contacts.txt','w')
          F.write('Mon_Tel#0611111111\n')
          F.close()
      
      
      
      # Version 1 :
      def ajouterContact1(nom,phone) :
          # Tester si le noméro du telephone se compose de 10 chiffres
          if len(phone) != 10 :
              raise AssertionError("nombre de chiffres du telephone doit être égal à 10 ")
          # Mettre les données dans le fichier
          F=open('contacts.txt','a')
          F.write(nom)
          F.write('#')
          F.write(phone)   
          F.write('\n')
          F.close()
      
      # Version 2 :
      def ajouterContact2(nom,phone) :
          # Tester si le noméro du telephone se compose de 10 chiffres
          if len(phone) != 10 :
              raise AssertionError("nombre de chiffres du telephone doit être égal à 10 ")
         
          # Mettre les données dans le fichier
          F=open('contacts.txt','a')
          F.write(nom+'#'+phone+'\n')   
          F.close()
      
      
      # Version 1 :
      def Recherche1(nom) :
          F=open('contacts.txt','r')
             
          flag=False
          while  flag==False :
              txt=F.readline()
              if nom in txt :
                  flag=True
              if txt=='' :
                  break
          F.close()
         
          if flag== True :
              res=txt.split('#')
              return res[1]
          else :
              return None
      
      # Version 2 :
      def Recherche2(nom) :
          # Ouvrir le fichier et mettre son contenu dans une liste
          F=open('contacts.txt','r')
          ls= F.readlines()
          F.close()
          # rechercher le numéro du contact si il existe
          for ligne in ls :
              A=ligne.split('#')
              if A[0]== nom :
                  return A[1]
          return None
         
      def modifierContact(nom,num) :
         
          if Recherche2(nom)==None :
              return False
          # Lire les données du fichier contact
          F  = open('contacts.txt','r')
          ls = F.readlines()
          F.close()
          n = len(ls)
          # Séparer les noms et les numéros de téléphones
          L = []
          for i in ls :
              i=i[:-1]# On supprime le caractère de retour à la ligne
              L.append(i.split('#'))
             
          # Modifier le numero de la personne souhaitée   
          for i in range(n):
              if L[i][0]== nom :
                  L[i][1]=num
                  break
          # Supprimer l'ancien contenu
          CreerFichier()
          # Ajouter le nouveau contenu aprés modification
          for i in range(1,len(L)) :
              ajouterContact2(L[i][0],L[i][1])
         
          return True
         
      def modifierContact2(nom,num) :
         
          if Recherche2(nom)==None :
              return False
          # Lire les données du fichier contact
          F  = open('contacts.txt','r')
          ls = F.readlines()
          F.close()
          n=len(ls)
             
          # Modifier le numero de la personne souhaitée   
          for i in range(n):
              A =ls[i].split('#')
              if A[0]== nom :
                  ls[i]=nom+'#'+num+'\n'
                  break
          F  = open('contacts.txt','w')
          F.writelines(ls)
         
          return True
      
      def Copie() :
          # Ouverture du fichier contacts en lecture
          F1=open('contacts.txt','r')
          # Créer le nouveau fichier texte
          F2=open('copie.txt','w')
          # On lit une ligne du fichier contacts et on le met dans le nouveau
          while 1 :
              ligne=F1.readline()
              F2.write(ligne)
              if ligne=='' :
                  break
         
          F1.close()
          F2.close()
      
      
      # Version 1  : 
      def affiche1(nomFich) :
          # Tester si l'ouverture du fichier est faite correctement
          try :
              F= open(nomFich,'r')
          except IOError :
              print("L'ouverture du fichier a échoué")
          # Afichier le contenu ligne par ligne
          while 1 :
              res= F.readline()
              print(res)
              if res=='' :
                  break
                 
          F.close()
                 
      # Version 2  : 
      def affiche2(nomFich) :
          # Tester si l'ouverture du fichier est faite correctement
          try :
              F= open(nomFich,'r')
          except IOError :
              print("L'ouverture du fichier a échoué")
          # Mettre tous le contenu du fichier dans une liste   
          ls= F.readlines()
          F.close()
          # Affichier les élement de la liste
          for ligne in ls :
              print(ligne)
             
      # Version 3 : (La plus simple)
      def affiche3(nomFich):
          # Tester si l'ouverture du fichier est faite correctement
          try :
              F= open(nomFich,'r')
          except IOError :
              print("L'ouverture du fichier a échoué")
          # Récupérer le contenu dans une chaine de caractères
          contenu =  fich.read()
          # Afficher la chaine : ici la chaine contient
          # des \n se qui permettra l'affichage ligne par ligne
          print(contenu)
      
      
             
      def suppDoublants(nomFich) :
          F=open(nomFich,'r')
          ls=F.readlines()
          F.close()
          n = len(ls)
          # Séparer les noms et les numéros de téléphones
          L = []
          for i in ls :
              i=i[:-1]# On supprime le caractère de retour à la ligne
              L.append(i.split('#'))
          #Chercher les numeros en double :
          i = 0
          while i < len(L)-1 :
              j = i+1
              while j < len(L) :
                  if L[i][1] == L[j][1] :
                      print(L[i],L[j])
                      del(L[j])
                  else :
                      j+=1
              i+=1
          # Supprimer l'ancien contenu
          CreerFichier()
          # Ajouter le nouveau contenu aprés modification
          for i in L :
              ajouterContact2(i[0],i[1])
         
                 
      def trier(nomFich) :
          F=open(nomFich,'r')
          ls=F.readlines()
          #Trier la liste ls : Méthode utilisée--> Trie à bulles
          echange=True
          while echange==True :
              echange=False
              for i in range(0,len(ls)-1) :
                  if(ls[i]>ls[i+1]):
                      val=ls[i];
                      ls[i]=ls[i+1];
                      ls[i+1]=val;
                      echange=True;
          print(ls)
          F.close()
          F=open(nomFich,'w')
          for i in ls :
              F.write(i)
          F.close()
         
      
      # Exemple d'utilisation des fonctions déja réalisées:
      CreerFichier()
      
      ajouterContact1('Sara','0644444444')
      ajouterContact2('Ahmed','0666666666')
      ajouterContact2('Noha','0622222222')
      ajouterContact2('Adam','0633333333')
      ajouterContact2('Nada','0622222222')
      ajouterContact2('Sara2','0644444443')
      ajouterContact2('Nora','0622222222')
      
      print(Recherche2('Adam'))
      
      Copie()
      
      affiche2('contacts.txt')
      
      modifierContact('Ahmed','0699999999')
      
      trier('contacts.txt')
      
      suppDoublants('contacts.txt')
      
      

Share This Page

Share