Hogyan kell egy vonalat kicserélni

Ha az új string hossza nem esik egybe a hossza a régi, akkor újra kell írni a teljes fájlt (kezdve a sort, hogy ki akarja cserélni), akkor is, ha ki kell cserélni csak egy sort a fájlban (ritka kivételtől eltekintve). Kapcsolódó kérdés: Írjon egy szöveges karakterláncot a kívánt indexhez egy C nyelvű fájlban.

Hozzon létre egy kifejezetten ideiglenes fájlt:

A különbség az, hogy az eredeti fájl tartalmát tárolja bak a fileinput megközelítés, a kód NamedTemporaryFile eredeti fájl helyett csak siker esetén (nincs kivétel).

Egy kis fájl betöltése a memóriába, hogy kap egy listát a húrok, időpontok megváltoztatására, és teljesen felülírja a fájlt, az adatok elvesztésének kockázata, ha hiba történik írás közben (hasonlóan a kódot válasz @stxdtm):

Ha a hossza az új vonal egybeesik a régi hossza (bájtban), akkor közvetlenül elküldeni a változások nem átírni más részein a fájlt, például a mmap modul, amely lehetővé teszi, hogy a fájlok és nézett, mint egy fájlt (.readline () stb.) És milyen bájt karakterláncot (.find ()). Kapcsolódó kérdés: Python - Hogyan tudom megváltoztatni a bájtokat egy fájlban?

Fájlokat megnyithat az olvasáshoz

A második módszer előnye, hogy nem kell bezárnia a fájlt manuálisan. A konstruktor ezt a blokk bezárása után végzi el.

A következő fájl felülírható:

De mivel azt szeretné, hogy írjon egy fájlt egy string csere, akkor meg kell használni keresés readlines () és egy reguláris kifejezés, vagy az aktuális sor, mint az, amit keres (ha van a keresett szöveget, természetesen), és annak helyettesítése.

Nagyjából elmondható, hogy ezt így megteheted:

A startwith () és endswith () függvények szintén segítenek. ha csak a keresési sztring kezdete vagy vége van. És emlékezzetek a regiszterre!

Vegye figyelembe azt is, hogy a () cserélje, ha a karakterlánc részben megegyezik. Ez azt jelenti:

Megkapjuk Thwas egy egyszerű példa

Kapcsolódó cikkek