Remplacer une ligne dans un fichier en Python

Vaibhhav Khetarpal 30 janvier 2023
  1. Utilisez la boucle for avec la fonction replace() pour remplacer une ligne dans un fichier en Python
  2. Créez un nouveau fichier avec le contenu actualisé et remplacez le fichier d’origine en Python
  3. Utilisez la fonction fileinput.input() pour remplacer le texte dans une ligne en Python
  4. Utilisez le module re pour remplacer le texte dans une ligne en Python
Remplacer une ligne dans un fichier en Python

La gestion des fichiers est considérée comme un aspect essentiel de toute application Web. Semblable à la plupart des langages de programmation, Python est parfaitement capable de prendre en charge la gestion de fichiers. Il vous permet de traiter des fichiers de différents types, essentiellement pour effectuer certaines opérations de base comme la lecture et l’écriture. Il fournit également d’autres options de gestion de fichiers pour faire fonctionner les fichiers.

Ce tutoriel montre les différentes méthodes disponibles pour remplacer une ligne dans un fichier en Python.

Pour illustrer les différentes manières de remplacer une ligne dans un fichier dans cet article, nous allons prendre un fichier texte, motivation.txt.

Fichier texte (motivation.txt):

There are always second chances in life. Anybody can bounce back from hardships. The hardships that we face are just a test to check our will. A strong will is all it takes to bounce back from a loss.

Le chemin du répertoire de stockage de ce fichier peut être différent sur l’ordinateur du lecteur ; par conséquent, il est conseillé d’ajuster en conséquence.

Utilisez la boucle for avec la fonction replace() pour remplacer une ligne dans un fichier en Python

La fonction open() est utilisée pour ouvrir un fichier en Python. Le fichier peut être ouvert au format texte ou binaire, selon le programmeur. La fonction open() a plusieurs modes, et tous offrent différentes options d’accessibilité pour ouvrir un fichier.

La simple boucle for est une manière conventionnelle de parcourir chaque ligne du fichier texte donné et de trouver la ligne que nous voulons remplacer. Ensuite, la ligne désirée peut être remplacée en utilisant la fonction replace(). Tout cela se fait en mode read. Enfin, le fichier est ouvert en mode écriture, et le contenu remplacé est écrit dans le fichier donné.

Le code suivant utilise la boucle for avec la fonction replace().

# opening the file in read mode
file = open("motivation.txt", "r")
replacement = ""
# using the for loop
for line in file:
    line = line.strip()
    changes = line.replace("hardships", "situations")
    replacement = replacement + changes + "\n"

file.close()
# opening the file in write mode
fout = open("motivation.txt", "w")
fout.write(replacement)
fout.close()

Créez un nouveau fichier avec le contenu actualisé et remplacez le fichier d’origine en Python

Plusieurs fonctions sont à l’œuvre pour mettre en œuvre ce processus. La connaissance du processus de toutes ces fonctions est nécessaire pour exécuter cette méthode avec succès. Nous devons importer plusieurs fonctions de trois modules dans le code Python.

  • Tout d’abord, nous devons importer la fonction mkstemp() du module tempfile. Cette fonction est utilisée pour renvoyer un tuple en sortie avec un chemin et un descripteur de fichier.
  • Ensuite, il faut importer deux fonctions du module shutil. La première fonction est la fonction copymode(), qui est utilisée pour copier les bits d’autorisation d’une source vers le chemin de destination. La deuxième fonction est la fonction move(), qui permet de déplacer des fichiers d’un endroit à un autre.
  • Enfin, il faut importer la fonction remove() du module OS. Cette fonction permet la suppression d’un chemin.

Tous ces modules doivent être importés dans le code Python actuel pour exécuter le code sans aucune erreur. Un exemple de code qui implémente de cette manière est le suivant.

from tempfile import mkstemp
from shutil import move, copymode
from os import fdopen, remove

# storing the path where the file is saved on your device as a variable
path = "C:\\Users\Admin\Desktop\python\test\motivation.txt"


def replacement(filepath, hardships, situations):

    # Creating a temp file
    fd, abspath = mkstemp()
    with fdopen(fd, "w") as file1:
        with open(filepath, "r") as file0:
            for line in file0:
                file1.write(line.replace(hardships, situations))
    copymode(filepath, abspath)
    remove(filepath)
    move(abspath, filepath)


replacement(path, "hardships", "situations")

Utilisez la fonction fileinput.input() pour remplacer le texte dans une ligne en Python

La méthode fileinput.input() obtient le fichier en entrée ligne par ligne et est principalement utilisée pour ajouter et mettre à jour les données dans le fichier donné.

Les modules fileinput et sys doivent être importés dans le code Python actuel afin d’exécuter le code sans erreur. Le code suivant utilise la fonction fileinput.input() pour remplacer le texte dans une ligne en Python.

import fileinput
import sys


def replacement(file, previousw, nextw):
    for line in fileinput.input(file, inplace=1):
        line = line.replace(previousw, nextw)
        sys.stdout.write(line)


var1 = "hardships"
var2 = "situations"
file = "motivation.txt"
replacement(file, var1, var2)

Utilisez le module re pour remplacer le texte dans une ligne en Python

Le module re est un module intégré que Python fournit aux programmeurs qui traitent des expressions régulières, et il doit être importé dans le code. Il aide à effectuer la tâche de recherche d’un motif dans une chaîne particulière donnée.

Dans cette méthode, nous utilisons deux fonctions, à savoir, re.compile() et re.escape(), du module RegEx. La fonction re.compile() est utilisée pour générer un objet d’expression régulière à partir du modèle d’expression régulière, qui est ensuite utilisé pour la correspondance. La fonction re.compile() est utilisée pour ignorer ou échapper les caractères spéciaux en Python.

Le code suivant utilise plusieurs fonctions du module Regex pour remplacer le texte dans une ligne en Python.

import re


def replacement(Path, text, subs, flags=0):
    with open(filepath, "r+") as f1:
        contents = f1.read()
        pattern = re.compile(re.escape(text), flags)
        contents = pattern.sub(subs, contents)
        f1.seek(0)
        f1.truncate()
        f1.write(file_contents)


filepath = "motivation.txt"
text = "hardships"
subs = "situations"
replacement(filepath, text, subs)

Ici, nous avons également utilisé une fonction sub() pour remplacer le motif donné par une chaîne ou le résultat d’une fonction spécifiée.

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