Comment lire le contenu d’un fichier de Python

2022-10-31 13:47:04  lundi  6386 mots  

Vos données sont maintenant enregistrées sur le disque dur. C’est très bien, car elles sont ainsi protégées. Mais ce n’est pas très utile tant que vous ne pouvez pas les relire. Pour cela, vous devez les charger en mémoire et effectuer sur elles les traitements voulus. Les étapes qui suivent vous montrent comment lire des données sur le disque pour pouvoir les afficher à l’écran. Cet exemple peut également être retrouvé dans les fichiers téléchargeables FormattedData.py and ReadCSV.py.

Là encore, je vous conseille de travailler sur une nouvelle copie du dossier Code\Chapitre15.

  1. Ouvrez une fenêtre de fichier Python et chargez-y le fichier FormattedData.py.
    Vous devriez retrouver le code créé dans la section précédente. Dans ce qui suit, nous allons le modifier de manière à ce que la classe puisse maintenant relire un fichier sauvegardé sur le disque.
  2. Tapez le code suivant à la fin du fichier en appuyant sur Entrée à la fin de chaque ligne :
    import csv
    
    class FormatData:
       def __init__(self, Name="", Age=0, Married=False):
          self.Name = Name
          self.Age = Age
          self.Married = Married
    
       def __str__(self):
          OutString = "'{0}', {1}, {2}".format(
             self.Name,
             self.Age,
             self.Married)
          return OutString
    
       def SaveData(Filename = "", DataList = []):
          with open(Filename,
                    "w", newline='\n') as csvfile:
             DataWriter = csv.writer(
                csvfile,
                delimiter='\n',
                quotechar=" ",
                quoting=csv.QUOTE_NONNUMERIC)
             DataWriter.writerow(DataList)
             csvfile.close()
             print("Données enregistrées !")
    
       def ReadData(Filename = ""):
          with open(Filename,
                    "r", newline='\n') as csvfile:
             DataReader = csv.reader(
                csvfile,
                delimiter="\n",
                quotechar=" ",
                quoting=csv.QUOTE_NONNUMERIC)
             
             Output = []
             for Item in DataReader:
                Output.append(Item[0])
                
             csvfile.close()
             print("Données lues !")
             return Output
    À nouveau, assurez-vous absolument que ReadData () est correctement indentée. Si vous ajoutez ReadData (), mais que cette méthode n’est pas indentée comme il faut sous la classe FormatData, Python considérera qu’il s’agit d’une fonction indépendante de cette classe. La manière la plus simple de s’y prendre consiste à suivre la même indentation que pour les fonctions __init__() et __str__().
    Ouvrir un fichier en lecture n’est pas très différent de l’ouvrir en écriture. La principale différence est que vous avez besoin de spécifier l’argument r (pour read) au lieu de w (pour write) dans la fonction open (). Sinon, les arguments sont exactement les mêmes, et ils fonctionnent de la même manière.
    Illustration N’oubliez pas que vous partez d’un fichier de texte lorsque vous travaillez avec un fichier .csv. Certes, il y a des délimiteurs, mais ce n’est tout de même que du texte. Lorsque vous lisez celui-ci en mémoire, vous devez donc rebâtir la structure Python. Dans ce cas, output est initialement une liste vide.
    Le fichier contient actuellement trois enregistrements séparés par le caractère de contrôle \n. Python lit chaque enregistrement via une boucle for. Pour lui, tant qu’il n’est pas arrivé au dernier enregistrement, ce qu’il obtient, ce sont deux entrées de liste. La première contient les données, et la seconde est vide. Seule la première vous intéresse. Ces entrées sont ajoutées à output jusqu’à obtention d’une liste de tous les enregistrements qui apparaissent dans le fichier.
    Là encore, n’oubliez pas de refermer votre fichier lorsque vous en avez fini avec lui. Finalement, le code affiche un message de succès avant de retourner output (donc la liste des enregistrements) à l’appelant.
  3. Sauvegardez ce code dans FormattedData.py.
  4. Ouvrez une autre fenêtre de fichier de Python.
  5. Tapez le code suivant en appuyant sur Entrée à la fin de chaque ligne :
    from FormattedData import FormatData
    
    NewData = FormatData.ReadData("TestFile.csv")
    
    for Entry in NewData:
       print(Entry)
    Le code de ReadCSV.py commence par importer la classe FormatData. Il crée ensuite un objet NewData, qui est une liste, en appelant FormatData. ReadData. Remarquez que l’utilisation d’une méthode de classe est un bon choix dans ce cas, car cela permet de rendre le code plus simple et plus court. L’application fait ensuite appel à une boucle for pour afficher le contenu de NewData.
  6. Choisissez la commande Run Module dans le menu Run.
    Vous voyez la sortie illustrée sur la Figure. Vous pouvez constater que le résultat est le même que sur la Figure, même si les données ont été écrites sur le disque, puis lues depuis celui-ci. C’est ainsi que les applications qui écrivent et lisent des données sont supposées travailler. Les données doivent en effet avoir la même apparence avant que vous ne les enregistriez et après les avoir relues. Sinon, cela signifierait que l’application ne joue pas correctement son rôle.
    Figure : L’application affiche les données lues dans le fichier.
Commentaire