80 votes

Est-il possible de modifier les lignes d'un fichier sur place ?

Est-il possible d'analyser un fichier ligne par ligne et d'éditer une ligne sur place tout en parcourant les lignes ?

30voto

Alexey Shrub Points 168

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

0voto

Bob Points 545

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 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X