文件后缀名判定可能存在的问题
后缀名应当是
string.split('.')
后返回列表的最后一项,而不是第二项
考虑如下代码
= "A.B.jpeg"
media_name # File extension
= media_name.split('.')[1]
file_ext
# Check that media format is supported
assert(len([i for i in ['bmp','jpeg', 'png','gif','mp4', 'x-msvideo'] \
if file_ext == i]) > 0), "File type not supported"
问题出在media_name.split('.')[1]
这一行,当文件名或路径中存在多个点号(.
)时,会导致错误的后缀提取。例如,当文件路径为C:\Users\MDY\AppData\Local\Temp\tmp435q8bsg.opensesame_pool\test.jpeg
时,file_ext
将会为opensesame_pool\test
,而不是正确的后缀名jpeg
。 后缀名并不是由.
分隔的第二个字符串,而应该是最后一个字符串。所以建议将提取后缀的代码改为file_ext = media_name.split(‘.’)[-1],以确保始终获取正确的文件后缀。