La modalità è ab+
il r
è implicito e 'a'ppend e (' w'rite '+' 'r') sono ridondanti. Dal momento che il CPython (cioè regolare python) file
si basa sul C stdio FILE
tipo, qui ci sono le linee interessate dalle fopen (3) pagina man:
w + Open per la lettura e la scrittura. Il file viene creato se non esiste , altrimenti viene troncato. Lo stream è posizionato all'inizio del file .
a + Aperto per la lettura e l'accodamento (scrittura alla fine del file). Il file viene creato se non esiste . La posizione iniziale del file per la lettura è all'inizio del file , ma l'output è sempre aggiunto alla fine del file.
Con la "b" attaccata per rendere felice DOS. Presumibilmente si desidera fare qualcosa di simile:
>>> f = open('junk', 'ab+')
>>> f
<open file 'junk', mode 'ab+' at 0xb77e6288>
>>> f.write('hello\n')
>>> f.seek(0, os.SEEK_SET)
>>> f.readline()
'hello\n'
>>> f.write('there\n')
>>> f.seek(0, os.SEEK_SET)
>>> f.readline()
'hello\n'
>>> f.readline()
'there\n'
Opere. Grazie anche per aver segnalato os.SEEK_SET nel tuo esempio. Penso di aver provato ad aprire il file con un + prima, ma non ho potuto leggere nulla da esso. Non ho pensato che il flusso fosse posto alla fine del file ... –
Ricorda che * devi * * sempre * cercare tra una lettura e una scrittura, o una scrittura e una lettura. Dimenticarsi di farlo di solito funziona sulla maggior parte dei sistemi, ma non su (per esempio) su Windows. –