Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menggantikan Baris dengan Cekap dalam Fail Teks Menggunakan Python?

Bagaimanakah Saya Boleh Menggantikan Baris dengan Cekap dalam Fail Teks Menggunakan Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-20 09:00:18664semak imbas

How Can I Efficiently Replace Lines in a Text File Using Python?

Menggantikan Baris dalam Fail Teks Dengan Cekap

Untuk menggantikan baris tertentu dalam fail teks dalam Python, pertimbangkan penggunaan modul input fail. Kaedah ini mengelakkan memuatkan keseluruhan fail ke dalam memori, menjadikannya cekap untuk fail besar.

Menggunakan input fail

import fileinput

with fileinput.input("test.txt", inplace=True) as f:
    for line in f:
        if "foo" in line:
            print(line.replace("foo", "bar"), end='')

Dengan kod ini, fail asal dinamakan semula kepada sandaran dan standard output diarahkan untuk menulis ke dalam fail asal dalam gelung. Sebarang pernyataan cetakan di dalam gelung mengubah suai kandungan fail secara langsung.

Manipulasi Fail Eksplisit

Untuk kebolehbacaan, pertimbangkan pilihan eksplisit ini:

Pilihan 1 (Untuk Fail Kecil ):

with open("test.txt", "r") as f:
    lines = f.readlines()

with open("test.txt", "w") as f:
    for line in lines:
        if "foo" in line:
            f.write(line.replace("foo", "bar"))
        else:
            f.write(line)

Pilihan 2 (Untuk Besar Fail):

import tempfile

with open("test.txt") as original, tempfile.NamedTemporaryFile(delete=False) as temp:
    for line in original:
        if "foo" in line:
            temp.write(line.replace("foo", "bar").encode())
        else:
            temp.write(line.encode())

temp.flush()
os.replace(temp.name, "test.txt")

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan Baris dengan Cekap dalam Fail Teks Menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn