Line oriented network protocols are very common, and I often find myself calling the socket makefile method so I can read complete lines from a socket. I'm probably not the first one who's wished that socket objects where more file-like.
While I don't think we'd want to go as far as to turn them into a stdio based file object, it might make sense to allow them to be iterated over (and add a .readline() method, I guess). This would necessitate adding some input buffering, which will complicate things like the .recv() method, so I'm not sure it's that good an idea, but it removes one gotchya for neophytes (and forgetful veterans). Thoughts?
Um, why doesn't the makefile() method do what you want?
The short answer is that it does, but not very tidily - by turning the socket object into a file object, I lose the original socket object functionality (for example, shutdown()). At another level, the concept of a "file-like" object is a very common python idiom - socket is the odd one out these days. It's really not a big deal - we could regularise the interface at the cost of more implementation complexity. -- Andrew McNamara, Senior Developer, Object Craft http://www.object-craft.com.au/