Comment créer un fichier via Python

2022-10-28 16:10:19  vendredi  8360 mots  

Toute donnée créée par l’utilisateur (et/ou l’application) et qui est destinée à être réutilisée pendant plus d’une session doit être sauvegardée sur un support permanent quelconque. Créer un fichier, puis y placer les données voulues est donc une part essentielle du travail avec Python. Vous pouvez utiliser les étapes qui suivent pour créer le code qui va écrire les données sur le disque dur. Cet exemple est également disponible dans les fichiers téléchargeables FormattedData.py et CreateCSV.py.

À nouveau, 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 sauvegarder un fichier sur le disque.
  2. Ajoutez l’instruction import suivante tout au début du fichier :
    import csv
    Le module csv de Python contient tout ce qu’il faut pour travailler avec les fichiers CSV.
    Python supporte nativement un grand nombre de types de fichiers, et il existe également des bibliothèques provenant de sources externes. En cas de besoin, vous devriez donc trouver votre bonheur soit directement dans Python, soit en faisant une recherche sur le Web. Malheureusement, il n’existe pas de liste claire sur les types de fichiers supportés. Vous pouvez le cas échéant consulter les adresses suivantes : https://docs.python.org/fr/3/library/archiving.html (formats d’archives) et https://docs.python.org/fr/3/library/fileformats.html (formats de fichiers).
  3. Tapez le code suivant à la fin du fichier en appuyant sur Entrée à la fin de chaque ligne :
    import csv
    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 !")
    Assurez-vous absolument que SaveData () est correctement indentée. Si vous ajoutez SaveData(), 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__().
    Remarquez que la méthode accepte deux arguments en entrée : le nom du fichier utilisé pour sauvegarder les données, et une liste d’éléments à enregistrer. Il s’agit ici d’une méthode de classe, et non d’une méthode d’instance. Vous verrez plus loin en quoi cette façon de procéder est un avantage. Par défaut, l’argument DataList est vide. De cette manière, la méthode ne provoquera pas d’exception si l’appelant ne lui passe rien. Bien entendu, il serait possible d’ajouter du code pour traiter le cas d’une liste vide considérée comme une erreur.
    L’instruction with demande à Python d’effectuer une série de tâches à partir d’une ressource spécifique, en l’occurrence un fichier ouvert de type csvfile, et appelé TestFile.csv. La fonction open() accepte différentes entrées selon la manière dont vous l’utilisez. Ici, vous l’ouvrez en mode écriture (signifié par la lettre w, pour write). L’attribut newline indique à Python qu’il doit traiter le caractère de contrôle \n comme un saut de ligne.
    Pour écrire la sortie, vous avez besoin d’un objet particulier. Ici, l’objet DataWriter est configuré pour utiliser le type de fichier csvfile, pour définir \n comme délimiteur, marquer les éléments par un espace, et utiliser des apostrophes uniquement avec les valeurs non numériques. À ce stade, nous supposons que c’est exactement ce dont vous avez besoin pour rendre votre sortie utilisable.
    En fait, écrire des données demande moins d’efforts que ce que vous pourriez croire. Un simple appel à DataWriter.writerow() avec DataList en entrée est tout ce dont vous avez besoin. Refermez toujours vos fichiers lorsque vous n’en avez plus besoin. Cette action vide les données sur le disque dur en s’assurant qu’elles sont bien écrites. Le code se termine en vous informant que l’opération s’est déroulée avec succès.
  4. Sauvegardez ce code sous le nom de FormattedData.py.
    Si vous vous servez du fichier téléchargeable, ne sauvegardez pas cette version allégée de FormattedData.py dans le dossier BP4D\Chapitre15 ! Vous écraseriez purement et simplement la version originale. N’oubliez pas de faire au préalable une copie de travail de ce dossier afin de ne rien perdre (ou plutôt de vous éviter d’avoir à faire les saisies qui suivront à la main…).
  5. Ouvrez une autre fenêtre de fichier de Python.
  6. Tapez le code suivant en appuyant sur Entrée à la fin de chaque ligne :
    from FormattedData import FromatFata
    
    NewData = [FormatData("阿当", 65, True),
               FormatData("用勺", 47,False),
               FormatData("认个", 52, True)]
    
    FormatData.SaveData("TestFile.csv", NewData)
    Cet exemple ressemble à celui de la section précédente. Cependant, au lieu de vous contenter d’afficher le contenu des données, vous l’enregistrez dans un fichier en appelant FormatData. SaveData (). C’est l’une des situations où l’emploi d’une méthode d’instance n’aurait pas d’intérêt particulier, puisque cela vous obligerait en plus à créer une instance de FormatData qui ne pourrait rien faire de plus pour vous.
  7. Choisissez la commande Run Module dans le menu Run.
    Une fenêtre Python en mode Shell va s’ouvrir. Un simple message vous indique le succès de l’opération. Bien entendu, ce message ne vous dit rien sur vos données. Vous savez simplement que votre nouveau fichier se trouve dans le même dossier que votre code, et qu’il s’appelle TestFile.csv. La plupart des plates-formes disposent d’une application par défaut pour ouvrir ce type de fichier. Dans le cas de Windows, il s’agit généralement de Microsoft Excel, ou encore de WordPad (parmi d’autres). Les Figures illustrent ces deux cas. À chaque fois, la sortie ressemble étonnamment à celle de la Figure.
    Figure : La sortie de l’application telle qu’elle apparaît dans Excel (avec le cas échéant un peu de remise en forme).

    Figure : La sortie de l’application telle qu’elle apparaît dans NotePad++.
Commentaire