tags:

views:

34

answers:

2

Hi i am looking to implement my own custom file like object for an internal binary format we use at work(i don't really want to go into too much detail because i don't know if i can). I am trying to go for a more pythonic way of doing things since currently we have two functions read/write(each ~4k lines of code) which do everything. However we need more control/finesse hence the fact of me rewriting this stuff.

I looked at the python documentation and they say what methods i need to implement, but don't mention stuff like iter() / etc.

Basically what i would love to do is stuff like this:

output_file_objs = [
    open("blah.txt", "w")
    open("blah142.txt", "wb")
    my_lib.open("internal_file.something", "wb", ignore_something=True)
]

data_to_write = <data>

for f in output_file_objs:
    f.write(data_to_write)

So i can mix it in with the others, and basically have a level of transparency. I will add custom methods to it, but thats not a problem.

Is there any sort of good reference regarding writing your own custom file like objects? Like any form of restrictions or special methods (iter). I should implement?

Or is there a good example of one from within the python standard library that i can look at?

A: 

Why not stuff your data in StringIO? Otherwise, you can look at the documentation and implement all of the file like methods. Truth be told, there are no real interfaces in Python, and some features (like tell()) may not make sense for your files, so you can leave them unimplemented.

Mike Axiak
Its alot more complex then StringIO, we need to do stuff like compression, updating some other files when a successful binary package has been created.
UberJumper
+2  A: 
Ignacio Vazquez-Abrams
Thanks i just implemented a rough skeleton and seems to work great.
UberJumper