¿Es posible cambiar el carácter de nueva línea que el método .readline()
busca al leer las líneas? Es posible que tenga la necesidad de leer un flujo de un objeto de archivo que se delimitará en algo que no sean líneas nuevas, y podría ser útil obtener un fragmento a la vez. file
objetos no tienen un readuntil
que yo no tendría que crear si puedo usar readline
Cambiar el carácter de nueva línea .readline() busca
EDIT:
todavía no he probado en un tubo que no sea stdin
; pero esto parece funcionar
class cfile(file):
def __init__(self, *args):
file.__init__(self, *args)
def readuntil(self, char):
buf = bytearray()
while True:
rchar = self.read(1)
buf += rchar
if rchar == char:
return str(buf)
uso:
>>> import test
>>> tfile = test.cfile('/proc/self/fd/0', 'r')
>>> tfile.readuntil('0')
this line has no char zero
this one doesn't either,
this one does though, 0
"this line has no char zero\nthis one doesn't either,\nthis one does though, 0"
>>>
He editado con una muestra de código de lo que estaba pensando; subclassing el objeto 'file'. – tMC
Como está escrito actualmente, esto no 'producirá 'ningún carácter final si el archivo no termina con el caracter' delim'. Tal vez sería mejor usar 'si c == '': return str (buf)'. – martineau