Paul Moore <p.f.mo...@gmail.com>: > Nor can I - that's my point. But if all I have is an open text-mode > file with the "strict" error mode, I have to incur one encode, and I > have to make sure that no characters are passed to that encode which > can't be encoded.
The file-like object you are given carries some baggage. IOW, it's not a "file" in the sense you are thinking about it. It's some object that accepts data with its write() method. Now, Python file-like objects ostensibly implement a common interface. However, as you are describing here, not all write() methods accept the same arguments. Text file objects expect str objects while binary file objects expect bytes objects. Maybe there are yet other file-like objects that expect some other types of object as their arguments. Bottom line: Python doesn't fulfill your expectation. Your library can't operate on generic file-like objects because Python3 doesn't have generic file-like objects. Your library must do something else. For example, you could require a binary file object. The caller must then possibly wrap their actual object inside a converter, which is relatively trivial in Python. Marko -- https://mail.python.org/mailman/listinfo/python-list