Est-il possible d'analyser un fichier ligne par ligne et d'éditer une ligne sur place tout en parcourant les lignes ?
Réponses
Trop de publicités?le module fileinput a une API très moche, je trouve un beau module pour cette tâche - in_place , exemple pour Python 3:
import in_place
with in_place.InPlace('data.txt') as file:
for line in file:
line = line.replace('test', 'testZ')
file.write(line)
différence principale par rapport à l'entrée de fichier :
- Au lieu de détourner sys.stdout, un nouveau descripteur de fichier est renvoyé pour écriture.
- Le descripteur de fichier prend en charge toutes les méthodes d'E/S standard, pas seulement readline().
Quelques notes utiles de @rocksNwaves placées en commentaire
Vous devez sauvegarder par la taille de la ligne en caractères. En supposant que vous ayez utilisé readline
, vous pouvez obtenir la longueur de la ligne et sauvegarder en utilisant :
file.seek(offset[, whence])
Définissez d'où sur SEEK_CUR
, définissez le décalage sur -length
.
Consultez Python Docs ou consultez la page de manuel pour seek
.