[Baypiggies] Conditional Context Managers

Aahz aahz at pythoncraft.com
Tue Oct 27 19:29:32 CET 2009


On Tue, Oct 27, 2009, Andrew Dalke wrote:
>
> def process(file_obj_or_name):
>     with isinstance(file_obj_or_name, str) and \
>             open(file_obj_or_name) or file_obj_or_name as file_obj:
>         print "First line", repr(file_obj.readline())
>     sys.stdout.write("Finished with %r\n" % (file_obj_or_name,))

Anyone using ``with`` ought to use the real ternary (reformatted to my
preference ;-):

     with (
            open(file_obj_or_name) 
            if isinstance(file_obj_or_name, str) 
            else file_obj_or_name
            ) as file_obj:
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

"You could make Eskimos emigrate to the Sahara by vigorously arguing --
at hundreds of screens' length -- for the wonder, beauty, and utility of
snow."  --PNH to rb in r.a.sf.f


More information about the Baypiggies mailing list