python – 如何检查对象是否是’file’的实例?

曾经在
Python(2.6)中可以问:

isinstance(f, file)

但在Python 3.0 file was removed中.

现在检查变量是否为文件的正确方法是什么? What’sNew文档没有提到这个……

最佳答案

def read_a_file(f)
    try:
        contents = f.read()
    except AttributeError:
        # f is not a file

替换您计划用于阅读的任何方法.如果您希望在超过98%的时间内传递像对象这样的文件,那么这是最佳选择.如果您希望在超过2%的时间内传递非对象文件,那么正确的做法是:

def read_a_file(f):
    if hasattr(f, 'read'):
        contents = f.read()
    else:
        # f is not a file

如果您有权访问要测试的文件类,那么这正是您要做的. (和FWIW,我也有2.6上的文件)请注意,此代码也适用于3.x.

点赞