Python获取文件的真实格式并修正扩展名

这篇博客讲述了如何在Python中处理文件的真实格式与扩展名不匹配的问题。作者通过使用filetype库来识别文件的实际格式,并展示了如何用Python代码替换错误的文件扩展名,以确保文件扩展名与实际格式一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《深度学习-如何提高数据集质量》

爬虫爬下来的图片有时候,图片是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有提供这些功能的包,分别为filetypepython-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)


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值