Ho un file in cui le righe sono separate utilizzando un delimitatore dire .
. Voglio leggere questo file riga per riga, dove le linee dovrebbero essere basate sulla presenza di .
invece di newline.Lettura di un file con un delimitatore specificato per newline
Un modo è:
f = open('file','r')
for line in f.read().strip().split('.'):
#....do some work
f.close()
Ma questo non è efficiente della memoria se il mio file è troppo grande. Invece di leggere un intero file insieme, voglio leggerlo riga per riga.
open
supporta un parametro 'newline' ma questo parametro richiede solo None, '', '\n', '\r', and '\r\n'
come input come indicato here.
C'è un modo per leggere la riga dei file in modo efficiente ma basato su un delimitatore pre-specificato?
Kudos @NPE! Semplice e funziona come un fascino. –
Potrebbe essere semplificato un po 'cambiando l'inizio del ciclo esterno a 'per chunk in iter (functools.partial (f.read, 4096),' '): buf + = chunk' e aggiungendo' if buf: yield buf' dopo il ciclo (non all'interno). – Harvey