Supprimer la ligne du fichier en Python

Vaibhhav Khetarpal 10 octobre 2023
  1. Utiliser le numéro de ligne pour supprimer une ligne spécifique d’un fichier en Python
  2. Supprimer la première ou la dernière ligne d’un fichier en Python
  3. Supprimer une ligne qui correspond à un texte particulier donné
  4. Supprimer une ligne qui correspond à un mot particulier donné
  5. Supprimer la ligne la plus courte dans le fichier donné en Python
  6. Supprimer toutes les lignes d’un fichier particulier donné en Python
Supprimer la ligne du fichier en Python

La gestion des fichiers de données est prise en charge et autorisée par Python et constitue une partie essentielle du langage de programmation Python. Cependant, il n’y a pas de fonctions directes en Python qui peuvent supprimer une ligne spécifique dans un fichier donné.

Ce didacticiel montre les différentes méthodes disponibles pour supprimer une ligne spécifique d’un fichier en Python.

Cette tâche de suppression d’une ligne spécifique peut être mise en œuvre à l’aide de plusieurs approches différentes.

Utiliser le numéro de ligne pour supprimer une ligne spécifique d’un fichier en Python

Méthode 1

Cette méthode, comme spécifié ci-dessus, utilise le numéro de ligne spécifié par l’utilisateur pour supprimer une ligne d’un fichier particulier en Python.

Il utilise la boucle for, la méthode readlines() et la méthode enumerate().

Prenons un exemple de fichier, nommé test.txt, dont le contenu est détaillé ci-dessous.

Hello
My name is
Adam
I am
a 
good
singer
cricketer dancer

Le code suivant utilise les méthodes enumerate() et readlines() pour supprimer une ligne d’un fichier particulier en Python.

l1 = []
with open("temp.txt", "r") as fp:
    l1 = fp.readlines()
with open("temp.txt", "w") as fp:
    for number, line in enumerate(l1):
        if number not in [4, 6]:
            fp.write(line)

Le code ci-dessus apporte les modifications suivantes :

Hello
My name is
Adam
I am
good
cricketer dancer

Explication des codes :

  1. Tout d’abord, le fichier est ouvert en mode read.
  2. Le contenu du fichier donné est ensuite lu dans une liste à l’aide de la fonction readlines().
  3. Le dossier est alors fermé.
  4. Le fichier est alors à nouveau ouvert, mais cette fois en mode write.
  5. Ensuite, une boucle for et la fonction enumerate() sont implémentées dans la liste créée.
  6. La condition if est utilisée pour vérifier et sélectionner le numéro de ligne. Le numéro de ligne mentionné est supprimé.
  7. Le dossier est alors fermé.

Méthode 2

La méthode seek() peut également être utilisée pour implémenter la même tâche de suppression d’une ligne d’un fichier à l’aide d’un numéro de ligne. Nous allons travailler sur le même fichier, test.txt, comme mentionné dans la méthode ci-dessus.

En utilisant la méthode seek(), nous n’avons pas besoin d’ouvrir deux fois le même fichier, ce qui le rend plus facile et plus rapide.

Le code suivant utilise la méthode seek() pour supprimer une ligne d’un fichier particulier en Python.

with open("temp.txt", "r+") as fp:
    lines = fp.readlines()
    fp.seek(0)
    fp.truncate()
    for number, line in enumerate(lines):
        if number not in [4, 6]:
            fp.write(line)

Le code ci-dessus apporte les modifications suivantes :

Hello
My name is
Adam
I am
good
cricketer dancer

Explication des codes :

  1. Le fichier est ouvert en mode r+, qui permet à la fois de lire et d’écrire.
  2. Le contenu du fichier est ensuite lu dans une liste à l’aide de la fonction readlines().
  3. La méthode seek() est ensuite utilisée pour ramener le pointeur au point de départ de la liste.
  4. Le fichier est ensuite tronqué à l’aide de la méthode truncate().
  5. Ensuite, une boucle for et la fonction enumerate() sont implémentées dans la liste créée.
  6. La condition if est utilisée pour vérifier et sélectionner le numéro de ligne. Le numéro de ligne mentionné est supprimé.
  7. Le dossier est fermé.

Supprimer la première ou la dernière ligne d’un fichier en Python

Pour implémenter cette méthode, nous utilisons le découpage de liste tout en écrivant le contenu du fichier dans une liste.

Par exemple, nous supprimerons la première ligne du même fichier mentionné ci-dessus (test.txt).

Le code suivant supprime la première ligne d’un fichier donné en Python.

with open("temp.txt", "r+") as fp:
    lines = fp.readlines()
    fp.seek(0)
    fp.truncate()
    fp.writelines(lines[1:])

Le code ci-dessus apporte les modifications suivantes et fournit la sortie suivante :

My name is
Adam
I am
a 
good
singer
cricketer dancer

Explication des codes :

  1. Le fichier est ouvert en mode r+, ce qui permet à la fois de lire et d’écrire.
  2. Le contenu du fichier est lu dans une liste à l’aide de la fonction readlines().
  3. La méthode seek() est ensuite utilisée pour ramener le pointeur au point de départ de la liste.
  4. Le fichier est ensuite tronqué à l’aide de la méthode truncate().
  5. Toutes les lignes du fichier sont ensuite écrites dans une liste à l’exception de la première ligne. Ceci est rendu possible grâce au découpage de liste.

Supprimer une ligne qui correspond à un texte particulier donné

Cette méthode peut être utilisée lorsqu’il y a plusieurs lignes qui contiennent un texte spécifique. Les lignes qui correspondent au texte donné peuvent alors être supprimées.

Par exemple, nous supprimerons une ligne qui correspond à un texte particulier donné du même fichier (test.txt) qui est utilisé dans les méthodes ci-dessus.

Cette méthode utilise la fonction strip() et la fonction write() pour implémenter la tâche de suppression d’une ligne contenant un texte donné.

Le code suivant supprime une ligne qui correspond à une chaîne particulière donnée en Python.

content = "cricketer dancer"
with open("temp.txt", "w") as fp:
    lines = fp.readlines()
    for line in lines:
        if line.strip("\n") != content:
            file.write(line)

Le code ci-dessus apporte les modifications suivantes et fournit la sortie suivante :

Hello
My name is
Adam
I am
a 
good
singer

Supprimer une ligne qui correspond à un mot particulier donné

Semblable à la suppression d’une ligne en faisant correspondre la chaîne entière, nous pouvons également essayer de trouver un mot qui pourrait être contenu dans une ligne, puis supprimer cette ligne particulière.

Par exemple, nous supprimerons une ligne qui correspond à un mot particulier du même fichier (test.txt) qui est utilisé dans les méthodes ci-dessus.

Pour cette méthode, nous utilisons le module os fourni par Python. Nous créons également un autre nouveau fichier et y écrivons les données pour implémenter cette tâche.

Le code suivant supprime une ligne qui correspond à un mot particulier donné en Python.

import os

with open("temp.txt", "r") as input:
    with open("bb.txt", "w") as output:
        for line in input:
            if "cricketer" not in line.strip("\n"):
                output.write(line)
os.replace("bb.txt", "temp.txt")

Le code ci-dessus apporte les modifications suivantes et fournit la sortie suivante :

Hello
My name is
Adam
I am
a 
good
singer

Supprimer la ligne la plus courte dans le fichier donné en Python

Comme son nom l’indique, cette méthode trouve et supprime la ligne la plus courte du fichier donné. Ici, nous utiliserons la méthode len() pour implémenter cette tâche.

Par exemple, nous supprimerons la ligne la plus courte du même fichier (test.txt) utilisé dans les méthodes ci-dessus.

Le code suivant supprime la ligne la plus courte du fichier donné en Python.

with open("temp.txt", "r") as rf:
    lines = rf.readlines()
shortest = 1000
lineToDelete = ""
for line in lines:
    if len(line) < shortest:
        shortest = len(line)
        lineToDelete = line
with open("temp.txt", "w") as write_file:
    for line in lines:
        if line == lineToDelete:
            pass
        else:
            write_file.write(line)

Supprimer toutes les lignes d’un fichier particulier donné en Python

Pour supprimer toutes les lignes d’un fichier particulier en Python, nous pouvons utiliser la fonction truncate(). De plus, le pointeur de fichier est alors replacé au début du fichier.

Le code suivant supprime toutes les lignes d’un fichier particulier donné en Python.

with open("temp.txt", "r") as fp:
    fp.truncate()
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Article connexe - Python File