Ersetzen einer Zeile in einer Datei in Python

Vaibhhav Khetarpal 30 Januar 2023
  1. Verwenden Sie die for-Schleife zusammen mit der Funktion replace(), um eine Zeile in einer Datei in Python zu ersetzen
  2. Erstellen Sie eine neue Datei mit dem aktualisierten Inhalt und ersetzen Sie die Originaldatei in Python
  3. Verwendung von die Funktion fileinput.input() zum Ersetzen des Textes in einer Zeile in Python
  4. Verwenden Sie das Modul re, um den Text in einer Zeile in Python zu ersetzen
Ersetzen einer Zeile in einer Datei in Python

Das Dateihandling wird als wesentlicher Aspekt jeder Webanwendung angesehen. Ähnlich wie die meisten Programmiersprachen ist Python perfekt in der Lage, das Dateihandling zu unterstützen. Es ermöglicht Ihnen, mit Dateien unterschiedlichen Typs umzugehen, im Wesentlichen um einige grundlegende Operationen wie Lesen und Schreiben durchzuführen. Es bietet auch einige andere Dateihandhabungsoptionen, um die Dateien zu bearbeiten.

Dieses Tutorial zeigt die verschiedenen verfügbaren Methoden zum Ersetzen einer Zeile in einer Datei in Python.

Um die verschiedenen Möglichkeiten zum Ersetzen einer Zeile in einer Datei in diesem Artikel zu demonstrieren, nehmen wir eine Textdatei, motivation.txt.

Textdatei (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.

Der Pfad des Speicherverzeichnisses dieser Datei kann auf dem Computer des Lesers unterschiedlich sein; Daher wird empfohlen, entsprechend anzupassen.

Verwenden Sie die for-Schleife zusammen mit der Funktion replace(), um eine Zeile in einer Datei in Python zu ersetzen

Die Funktion open() wird verwendet, um eine Datei in Python zu öffnen. Die Datei kann entweder im Text- oder im Binärformat geöffnet werden, je nach Programmierer. Die Funktion open() hat verschiedene Modi, die alle unterschiedliche Zugriffsmöglichkeiten zum Öffnen einer Datei bieten.

Die einfache for-Schleife ist eine herkömmliche Methode, um jede Zeile in der gegebenen Textdatei zu durchlaufen und die Zeile zu finden, die wir ersetzen möchten. Anschließend kann die gewünschte Zeile mit der Funktion replace() ersetzt werden. All dies geschieht im Modus Lesen. Schliesslich wird die Datei im Schreiben-Modus geöffnet und der ersetzte Inhalt in die angegebene Datei geschrieben.

Der folgende Code verwendet die for-Schleife zusammen mit der Funktion 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()

Erstellen Sie eine neue Datei mit dem aktualisierten Inhalt und ersetzen Sie die Originaldatei in Python

Mehrere Funktionen sind am Werk, um diesen Prozess zu implementieren. Die Kenntnis des Ablaufs all dieser Funktionen ist notwendig, um diese Methode erfolgreich auszuführen. Wir müssen mehrere Funktionen aus drei Modulen in den Python-Code importieren.

  • Zuerst müssen wir die Funktion mkstemp() aus dem Modul tempfile importieren. Diese Funktion wird verwendet, um ein Tupel als Ausgabe zusammen mit einem Pfad und einem Dateideskriptor zurückzugeben.
  • Dann müssen wir zwei Funktionen aus dem Modul shutil importieren. Die erste Funktion ist die Funktion copymode(), die beim Kopieren der Berechtigungsbits von einem Quell- in den Zielpfad verwendet wird. Die zweite Funktion ist die Funktion move(), die das Verschieben von Dateien von einem Ort zum anderen ermöglicht.
  • Schließlich müssen wir die Funktion remove() aus dem Modul OS importieren. Diese Funktion ermöglicht das Löschen eines Pfades.

Alle diese Module müssen in den aktuellen Python-Code importiert werden, um den Code fehlerfrei auszuführen. Ein Beispielcode, der auf diese Weise implementiert wird, lautet wie folgt.

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")

Verwendung von die Funktion fileinput.input() zum Ersetzen des Textes in einer Zeile in Python

Die Methode fileinput.input() holt sich die Datei zeilenweise als Eingabe und dient hauptsächlich zum Anhängen und Aktualisieren der Daten in der gegebenen Datei.

Die Module fileinput und sys müssen in den aktuellen Python-Code importiert werden, um den Code fehlerfrei ausführen zu können. Der folgende Code verwendet die Funktion fileinput.input() zum Ersetzen des Textes in einer Zeile in 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)

Verwenden Sie das Modul re, um den Text in einer Zeile in Python zu ersetzen

Das Modul re ist ein eingebautes Modul, das Python Programmierern zur Verfügung stellt, die sich mit regulären Ausdrücken befassen, und es muss in den Code importiert werden. Es hilft bei der Suche nach einem Muster in einer bestimmten Zeichenkette.

In dieser Methode verwenden wir zwei Funktionen, nämlich re.compile() und re.escape() aus dem Modul RegEx. Die Funktion re.compile() wird verwendet, um aus dem Muster des regulären Ausdrucks ein reguläres Ausdrucksobjekt zu generieren, das dann zum Abgleichen verwendet wird. Die Funktion re.compile() wird verwendet, um die Sonderzeichen in Python zu ignorieren oder zu maskieren.

Der folgende Code verwendet mehrere Funktionen aus dem Modul Regex, um den Text in einer Zeile in Python zu ersetzen.

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)

Hier haben wir auch eine sub()-Funktion verwendet, um das angegebene Muster durch einen String oder ein Ergebnis einer angegebenen Funktion zu ersetzen.

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

Verwandter Artikel - Python File