Supprimer une ligne d'un fichier CSV en Python

1. À propos de la suppression d'une ligne dans un fichier CSV

Le module csv de Python permet de lire et d'écrire facilement des fichiers CSV. En revanche, il ne fournit pas de fonction permettant de supprimer directement une ligne au milieu d'un fichier CSV.

La méthode habituelle consiste à lire les données, à exclure la ligne que l'on souhaite supprimer, puis à réécrire le fichier CSV. On peut effectuer cette opération avec csv.reader() et csv.writer(), ou avec csv.DictReader() et csv.DictWriter().

Dans ce tutoriel, nous utiliserons principalement le fichier etudiants.csv suivant.

Sortie :

Le principe général consiste donc à conserver toutes les lignes sauf celle qui répond au critère de suppression.

2. Supprimer une ligne avec csv.reader() et csv.writer()

Une première méthode consiste à lire toutes les lignes avec csv.reader(), à filtrer la ligne à supprimer, puis à réécrire les lignes restantes avec csv.writer(). Dans l'exemple suivant, nous supprimons l'étudiant dont l'identifiant est égal à 3.

Sortie :

Après l'exécution du programme, la ligne dont l'identifiant était égal à 3 n'existe plus dans le fichier. Le contenu devient alors :

Sortie :

Dans cette méthode, lignes[0] correspond à l'en-tête du fichier. Il est conservé systématiquement, tandis que les autres lignes sont filtrées selon leur identifiant.

3. Supprimer une ligne avec csv.DictReader() et csv.DictWriter()

Lorsque le fichier CSV possède un en-tête, l'utilisation de csv.DictReader() est souvent plus lisible. Chaque ligne est représentée par un dictionnaire et les colonnes peuvent être désignées directement par leur nom.

Dans l'exemple suivant, nous supprimons l'étudiant dont l'identifiant est égal à 3 en utilisant la colonne "id".

Sortie :

Après la suppression, on peut relire le fichier afin de vérifier les lignes restantes.

Sortie :

Cette méthode est particulièrement intéressante lorsque le fichier possède de nombreuses colonnes, car ligne["id"] est généralement plus explicite que ligne[0].

4. Supprimer une ligne selon une valeur unique

Dans un fichier CSV contenant des enregistrements, il est préférable d'effectuer la suppression à partir d'une valeur unique, par exemple un identifiant. Cela évite de supprimer accidentellement plusieurs personnes ayant le même nom, le même âge ou la même ville.

Le programme suivant demande l'identifiant à supprimer et vérifie également si une ligne correspondante a réellement été trouvée.

Sortie :

Si l'identifiant recherché n'existe pas, aucune ligne n'est supprimée. Le programme peut alors en informer l'utilisateur.

Sortie :

On peut également placer la suppression dans une fonction afin de pouvoir la réutiliser facilement dans une application.

Sortie :

5. Supprimer une ligne avec un fichier temporaire

Pour les fichiers plus importants, il n'est pas toujours souhaitable de charger toutes les lignes en mémoire. Une solution consiste à lire le fichier CSV ligne par ligne et à écrire uniquement les lignes conservées dans un fichier temporaire.

Le programme suivant copie toutes les lignes sauf celle dont l'identifiant est égal à 3 dans un fichier temporaire nommé etudiants_temp.csv.

Sortie :

Une fois le fichier temporaire correctement écrit et fermé, os.replace() peut remplacer le fichier CSV original par le nouveau fichier. Cela évite notamment de lire et d'écrire simultanément dans le même fichier.

Sortie :

Les deux opérations peuvent être regroupées dans une fonction. Le fichier original n'est remplacé qu'après la fermeture des fichiers utilisés pour la lecture et l'écriture.

Sortie :

Cette approche est particulièrement intéressante pour traiter un fichier volumineux, car les lignes sont traitées progressivement au lieu d'être toutes stockées dans une liste en mémoire.

6. À retenir !

La suppression d'une ligne dans un fichier CSV consiste généralement à lire le fichier, exclure la ligne concernée et réécrire les données restantes. Un fichier CSV n'est pas une base de données permettant de supprimer directement un enregistrement au milieu du fichier.

  • Le module csv permet de lire et d'écrire les fichiers CSV.
  • csv.reader() manipule chaque ligne principalement sous forme de liste.
  • csv.DictReader() permet d'accéder aux valeurs à partir des noms de colonnes.
  • csv.writer() et csv.DictWriter() permettent de réécrire les lignes conservées.
  • Il est préférable de supprimer une ligne à partir d'un identifiant unique.
  • Si plusieurs lignes correspondent au critère utilisé, un filtre peut supprimer plusieurs lignes.
  • Pour un petit fichier, les lignes peuvent être chargées en mémoire puis filtrées.
  • Pour un fichier volumineux, un fichier temporaire permet de traiter progressivement les lignes.
  • os.replace() peut remplacer le fichier original une fois le fichier temporaire correctement fermé.
  • L'utilisation de newline="" est recommandée lors de l'ouverture des fichiers destinés au module csv.

Le programme suivant présente une version compacte permettant de supprimer un enregistrement identifié par sa colonne "id".

Sortie :

 




Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


loader-image
Le prix initial était : € 11,00.Le prix actuel est : € 10,00.
Le prix initial était : € 6,00.Le prix actuel est : € 5,00.



Leave a Reply

Your email address will not be published. Required fields are marked *