[Python-Dev] file() vs open(), round 7

M.-A. Lemburg mal at egenix.com
Tue Dec 27 16:20:41 CET 2005


Phillip J. Eby wrote:
> At 02:35 PM 12/27/2005 +0100, Fredrik Lundh wrote:
>> M.-A. Lemburg wrote:
>>
>>>> can we add a opentext factory for file/codecs.open while we're at it ?
>>> Why a new factory function ? Can't we just redirect to codecs.open()
>>> in case an encoding keyword argument is passed to open() ?!
>> I think open is overloaded enough as it is.  Using separate functions for 
>> distinct
>> use cases is also a lot better than keyword trickery.
>>
>> Here's a rough draft:
>>
>>     def textopen(name, mode="r", encoding=None):
>>         if "U" not in mode:
>>             mode += "U"
>>         if encoding:
>>             return codecs.open(name, mode, encoding)
>>         return file(name, mode)
> 
> Nice. It should probably also check whether there's a 'b' or 't' in 'mode' 
> and raise an error if so. 

Why should it do that ?

FYI: codecs.open() explicitly adds the 'b' to the mode since
we don't want the platform text mode interfere with the
Unicode line breaking.

> I'd also prefer to call it 'textfile', as that 
> reads more nicely with "for line in textfile(...):" use cases, and it does 
> return a file object.

Nope: open() is only guaranteed to return a file-like object,
e.g. codecs.open() will return a wrapped version of a file
object.

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Dec 27 2005)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::


More information about the Python-Dev mailing list