Creating a custom file like object python suggesti

2020-08-22 08:02发布

问题:

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?

回答1:

What makes up a "file-like" actually depends on what you intend to use it for; not all methods are required to be implemented (or to have a sane implementation).

Having said that, the file and iterator docs are what you want.



回答2:

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.



标签: python file