concatenate file-like objects -> file-like object
Marc 'BlackJack' Rintsch
bj_666 at gmx.net
Wed Jul 11 02:17:45 EDT 2007
On Tue, 10 Jul 2007 17:55:52 -0700, kgk wrote:
> I would like to concatenate several file-like objects
> to create a single file-like object. I've looked at fileinput,
> however
> this returns a fileinput object that is not very file-like.
>
> something like
> # a has 50 bytes, and b has 100 bytes
> f = FileList (open('a'), open('b'))
> f.read (100) # read 50 bytes from a and 50 from b
>
> My interest is in passing several files to an incremental parser
> as if they came from a single file. I would rather not load them
> in memory using StringIO and the parser reads only from file-like
> objects.
Then program a file like object yourself. Something like this (untestet):
class FileList(object):
def __init__(self, files):
self.files = reversed(files)
self.current_file = self.files.pop()
def read(size):
result = ''
while self.files:
data = self.current_file.read(size)
result += data
if len(data) != size:
self.current_file = self.files.pop()
size = size - len(data)
return result
Ciao,
Marc 'BlackJack' Rintsch
More information about the Python-list
mailing list