我的猜测是,这是为了允许将自定义函数添加到imghdr.tests
. 从模块的文档imghdr
-
imghdr
您可以通过附加到此变量来扩展可以识别的文件类型列表:
imghdr.test
执行单个测试的函数列表。每个函数都有两个参数:字节流和打开的类似文件的对象。当使用字节流调用 what() 时,类文件对象将为 None。
如果测试成功,测试函数应该返回一个描述图像类型的字符串,如果失败,则返回 None。
从文档中可以看出,该imghdr
模块允许对tests
列表进行扩展。我认为f
添加到此列表中的这些自定义函数可能存在添加参数。
看看imghdr.what()
功能——
if h is None:
if isinstance(file, basestring):
f = open(file, 'rb')
h = f.read(32)
else:
location = file.tell()
h = file.read(32)
file.seek(location)
可以看出,当我们向what()
函数发送文件名时,它只从文件中读取前 32 个字节,并且只在函数的h
参数中发送这 32 个字节test
,我相信附加f
参数可能适用于第一个32
字节的情况不足以确定图像格式(特别是对于自定义测试)。