Python 3.3.2检查该对象是否为文件类型

时间:2013-09-18 19:42:23

标签: python file types python-3.x

我正在从Python 2.7移植到Python 3.3.2。在Python 2.7中,我曾经能够做类似assert(type(something) == file)的事情,但似乎在Python 3.3.2中这是错误的。我如何在Python 3.3.2中做类似的事情?

1 个答案:

答案 0 :(得分:24)

Python 3文件对象是io module的一部分,在该模块中针对ABC classes进行测试:

from io import IOBase

if isinstance(someobj, IOBase):

不要在Python 2中使用type(obj) == file;你改用isinstance(obj, file)。即使这样,您也希望测试功能; io ABCs让你做的事情;对于实现Abstract Base Class定义的所有方法的任何对象,isinstance() function将返回True

演示:

>>> from io import IOBase
>>> fh = open('/tmp/demo', 'w')
>>> isinstance(fh, IOBase)
True
>>> isinstance(object(), IOBase)
False