25 votes

Comment écraser quelques octets au milieu d'un fichier avec Python ?

J'aimerais pouvoir écraser certains octets à un offset donné dans un fichier en utilisant Python.

Mes tentatives ont échoué lamentablement et se sont soldées par :

  • écrasement des octets au niveau de l'offset mais aussi troncature du fichier juste après (mode de fichier = "w" ou "w+")
  • ajouter les octets à la fin du fichier (mode de fichier = "a" ou "a+")

Est-il possible de réaliser cela avec Python de manière portable ?

47voto

Ben Blank Points 21786

Essayez ceci :

fh = open("filename.ext", "r+b")
fh.seek(offset)
fh.write(bytes)
fh.close()

5voto

tomjen Points 2460

Selon le cette page python vous pouvez taper file.seek pour rechercher un offset particulier. Vous pouvez alors écrire ce que vous voulez.

Pour éviter de tronquer le fichier, vous pouvez l'ouvrir avec "a+" puis chercher le bon décalage.

0voto

Johannes Weiß Points 19013

C'est très inefficace, mais je ne connais pas d'autre moyen pour l'instant. n'écrase pas les octets au milieu (comme le fait Ben Blanks) :

a=file('/tmp/test123','r+')
s=a.read()
a.seek(0)
a.write(s[:3]+'xxx'+s[3:])
a.close()

écrira 'xxx' à l'offset 3 : 123456789 --> 123xxx456789

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