Python 3.3.2检查对象是否为file类型
我正在从Python 2.7移植到Python 3.3.2。在Python2.7中,我曾经能够执行类似于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
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