isinstance(.., file) for Python 3

Stefan Behnel stefan_ml at behnel.de
Thu Nov 8 10:14:37 EST 2012


Duncan Booth, 08.11.2012 14:58:
> Ulrich Eckhardt wrote:
>> If possible, I'm looking for a solution that works for Pythons 2 and 3, 
>> since I'm not fully through the conversion yet and have clients that 
>> might use the older snake for some time before shedding their skin.
>>
>> Suggestions?
> 
> Why bother checking types at all?
> 
> def foo(file_or_string):
>     try:
>         data = file_or_string.read()
>     except AttributeError:
>         data = file_or_string
>     ... use data ...

Or, a tiny bit more safely:

    try:
        read = file_or_string.read
    except AttributeError:
        data = file_or_string
    else:
        data = read()

I'd rather go with one of the previous solutions, though.

Stefan





More information about the Python-list mailing list