爬虫爬下来的图片有时候,图片是JPEG格式的,但使用却是PNG的扩展名,也就是真实格式和扩展名对应不上。
~/Desktop$ file 6b35e69d93b085480c7f30ba6eda2eae.png
6b35e69d93b085480c7f30ba6eda2eae.png: JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, baseline, precision 8, 1024x683, frames 3
看到了啊?通过linux file命令查看文件的时候,实际是JPEG格式的,但扩展名却是PNG的。下面我的工作就是给错误的文件,替换正确的扩展名。
感谢Python有提供这些功能的包,分别为filetype和python-magic这两个安装一个就可以,代码我使用的是filetype,终于那个效率高我而已不知道,python-magic 部分别我注释掉了,发现我使用的这个功能完全相同。
安装方式:
pip install python-magic
或者
pip install filetype
下面就是代码了:
import magic
import os
import filetype
DirList = [
'/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/drawings',
'/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/hentai',
'/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/neutral',
'/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/porn',
'/home/king/PycharmProjects/nsfw_data_scrapper/raw_data/sexy'
]
for path in DirList:
for file in os.listdir(path):
pic_file = os.path.join(path, file)
if pic_file.endswith('jpeg') or pic_file.endswith('png'):
# a = magic.from_file(pic_file,mime=True )
# print(pic_file, a)
kind = filetype.guess(pic_file)
getExt = str(kind.mime).split('/')[1]
#print(pic_file, kind.extension, kind.mime)
mainName, ext = os.path.splitext(pic_file)
ext = ext[1:]
if ext != getExt:
# if(getExt != 'jpeg' and getExt != 'png'):
# os.remove(pic_file)
print(pic_file, getExt)
os.renames(pic_file, mainName + "." + getExt)