曾经在
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.