Alan Gauld wrote:
On 05/03/12 21:25, Dave Angel wrote:

It's not clear what __add__() should mean for physical files.

My guess would be similar to the cat operator in Unix:

$ cat file1, file2 > file3

is equivalent to

file3 = file1 + file2

But of course, thats just my interpretation of file addition...

I think that's what Albert-Jan is probably thinking, but the two models are not quite the same. I think that what he wants is probably closer to something like the fileinput module. I think what he wants is to avoid this:

for f in (file1, file2, file3, file4):
    for record in f:
        process(record)

in favour of this:

all_the_files = file1 + file2 + file3 + file4  # merge file contents
for record in all_the_files:
    process(record)

Albert-Jan, am I close? If not, please explain what you are trying to 
accomplish.

If the files are small, the easy way is to just read their contents, add them together as strings or lists, and then process the lot. But if the files are big, or you want to process them on-demand instead of up-front, you need an approach similar to fileinput.

Personally, all these Reader and Append objects make my brain hurt, and I hardly ever use operator overloading, except perhaps for numeric types. Reader objects, I can just get. But "Append" objects?

This may be useful:

http://steve-yegge.blogspot.com.au/2006/03/execution-in-kingdom-of-nouns.html

and also itertools:


from itertools import chain
merged = chain(file1, file2, file3, file4)
for record in merged:
    process(record)



--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to