En los modos 'a'
o 'a+'
, cualquier escrito se hace al final del archivo, aunque en el momento actual, cuando la función write()
se activa el puntero del archivo no se encuentra al final del archivo: el puntero se mueve a el final del archivo antes de cualquier escritura. Puedes hacer lo que quieras de dos maneras.
primera forma, se puede utilizar si no hay problemas para cargar el archivo en la memoria:
def line_prepender(filename, line):
with open(filename, 'r+') as f:
content = f.read()
f.seek(0, 0)
f.write(line.rstrip('\r\n') + '\n' + content)
segunda forma:
def line_pre_adder(filename, line_to_prepend):
f = fileinput.input(filename, inplace=1)
for xline in f:
if f.isfirstline():
print line_to_prepend.rstrip('\r\n') + '\n' + xline,
else:
print xline,
No sé cómo este método funciona bajo el capó y si puede ser empleado en un archivo grande y grande. El argumento 1 pasado a la entrada es lo que permite reescribir una línea en su lugar; las siguientes líneas se deben mover hacia delante o hacia atrás con el fin de que la operación in-situ se lleva a cabo, pero no conocen el mecanismo de
No está incluido, eso está _pre_ pendiente. –
posible duplicado de [Python f.write() al principio del archivo?] (Http://stackoverflow.com/questions/2677617/python-f-write-at-beginning-of-file) – geoffspear