Python 3.3.2检查对象是否为file类型

Python 3.3.2检查对象是否为file类型,python,file,types,python-3.x,Python,File,Types,Python 3.x,我正在从Python 2.7移植到Python 3.3.2。在Python2.7中,我曾经能够执行类似于assert(type(something)==file)的操作,但在Python3.3.2中,这似乎是错误的。如何在Python 3.3.2中执行类似的操作?Python 3文件对象是该模块中测试的一部分: from io import IOBase if isinstance(someobj, IOBase): 不要在Python2中使用type(obj)==file;您可以使用isi

我正在从Python 2.7移植到Python 3.3.2。在Python2.7中,我曾经能够执行类似于
assert(type(something)==file)
的操作,但在Python3.3.2中,这似乎是错误的。如何在Python 3.3.2中执行类似的操作?

Python 3文件对象是该模块中测试的一部分:

from io import IOBase

if isinstance(someobj, IOBase):
不要在Python2中使用
type(obj)==file
;您可以使用
isinstance(obj,file)
代替。即使这样,您也希望测试功能;
io
ABCs让你做的事情;对于实现抽象基类定义的所有方法的任何对象,将返回
True

演示:

FWIW,
type(something)==sometype
通常不赞成使用
isinstance
>>> from io import IOBase
>>> fh = open('/tmp/demo', 'w')
>>> isinstance(fh, IOBase)
True
>>> isinstance(object(), IOBase)
False