txt - ¿Cómo sobrescribir algunos bytes en el medio de un archivo con Python?
guardar una lista en un archivo python (3)
Me gustaría poder sobrescribir algunos bytes en un desplazamiento dado en un archivo usando Python.
Mis intentos fracasaron miserablemente y resultaron en:
- sobrescribir los bytes en el desplazamiento pero también truncar el archivo justo después (modo de archivo = "w" o "w +")
- anexando los bytes al final del archivo (modo de archivo = "a" o "a +")
¿Es posible lograr esto con Python de una manera portátil?
De acuerdo con esta página de python puede escribir file.seek para buscar un desplazamiento particular. Luego puedes escribir lo que quieras.
Para evitar truncar el archivo, puede abrirlo con "a +" y luego buscar el desplazamiento a la derecha.
Muy ineficiente, pero no sé de ninguna otra manera en este momento, que no sobrescribe los bytes en el medio (como hace Ben Blanks):
a=file(''/tmp/test123'',''r+'')
s=a.read()
a.seek(0)
a.write(s[:3]+''xxx''+s[3:])
a.close()
escribirá ''xxx'' en el desplazamiento 3: 123456789 --> 123xxx456789
Prueba esto:
fh = open("filename.ext", "r+b")
fh.seek(offset)
fh.write(bytes)
fh.close()