Vorrei un modo per fare for line in file
in python, dove la fine della riga è ridefinita per essere qualsiasi stringa che voglio. Un altro modo per dire è che voglio leggere i record dal file piuttosto che dalle righe; Voglio che sia altrettanto veloce e conveniente da fare come linee di lettura.Come leggere i record terminati dal separatore personalizzato dal file in python?
Questo è l'equivalente Python per impostare il separatore di record di input $/
di perl o utilizzare Scanner
in java. Questo non deve necessariamente usare for line in file
(in particolare, l'iteratore potrebbe non essere un oggetto file). Solo qualcosa di equivalente che evita di leggere troppi dati in memoria.
Consulta anche: Add support for reading records with arbitrary separators to the standard IO stack
Dopo aver letto l'OP il tutto collegato, sembra che Douglas Alan abbia già pubblicato una ricetta molto simile [ 5 anni nella discussione] (http://bugs.python.org/issue1152248#msg109117). Mi piace il suo meglio perché ti permette di trasformare l'input newline in un output newline invece di scartarlo semplicemente ... ma piuttosto che modificare il mio per farlo combaciare, lascerò semplicemente il link. – abarnert
Un altro vantaggio di quello collegato è che restituisce il resto del buffer quando il flusso viene chiuso. – jozxyqk
@jozxyqk: Non sono sicuro di cosa intendi con questo. Questa versione produce il resto del buffer in EOF. (Se il file è effettivamente chiuso da sotto te e generato un'eccezione, presumo tu voglia quell'eccezione - dopotutto, il punto è lavorare come "per file in linea:" ma con un delimitatore diverso). – abarnert