objectif
Remplacer du texte dans un fichier en créant un .bak automatiquement.
code minimal
import fileinput, tempfile, pathlib, sys
with tempfile.TemporaryDirectory() as tmp:
p = pathlib.Path(tmp) / "conf.txt"
p.write_text("host=localhost\n", encoding="utf-8")
backup = str(p) + ".bak"
# inplace redirige print() vers le même fichier
for line in fileinput.input(files=[str(p)], inplace=True, backup=".bak"):
if line.startswith("host="):
line = "host=example.org\n"
print(line, end="")
changed = p.read_text(encoding="utf-8").strip()
print(changed == "host=example.org") # attendu: True
utilisation
print(True)
variante(s) utile(s)
import fileinput
# Traitement multi-fichiers
print(hasattr(fileinput, "input"))
notes
- Avec inplace=True, tout ce qui est imprimé va dans le fichier d’origine.
- backup permet de restaurer facilement.