python - 检测常见文件类型

标签 python

我正在尝试创建一个脚本,根据常见文件类型检查我的 Downloads 目录中的所有文件,然后告诉我该目录中有多少文件既不是 GIF 也不是JPG 文件。我熟悉基本的Python,但这是我第一次尝试这样的事情,我正在寻找一些帮助或正确方向的一点?

file_sigs = {'\xFF\xD8\xFF':('JPEG','jpg'), '\x47\x49\x46':('GIF','gif')}

def readFile():
    filename = r'c:/temp/downloads'  
    fh = open(filename, 'r') 
    file_sig = fh.read(3) 

print '[*] check_sig() File:',filename #, 'Hash Sig:', 
binascii.hexlify(file_sig) 

最佳答案

另一种选择是使用 imghdr 库查看文件的 header (它将为您处理 header 检查),如下所示(相应地调整您的根路径):

#!/usr/bin/env python

import os
from os.path import join
import imghdr

stats = {'imgs': 0, 'nonimgs': 0}

for dirpath, dirnames, filenames in os.walk('/home/user/Downloads'):
    for name in filenames:
        fullPath = os.path.join(dirpath, name)
        fileType = imghdr.what(fullPath)

        if fileType in ('gif', 'jpeg'):
            stats['imgs'] += 1
        else:
            stats['nonimgs'] += 1

        print "File: {0}, type: {1}".format(fullPath, fileType)

print "non images: {0}".format(stats['nonimgs'])
print "images: {0}".format(stats['imgs'])

请参阅imghdr doc了解更多信息。

关于python - 检测常见文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25704768/

相关文章:

python - 将 numpy 数组转换为列表返回类型 numpy.ndarray

python - 将字典传递给python中的字符串

python - 具有多个记录路径的 json_normalize

python - Matplotlib 标记可快速绘制和渲染

python - 如何使用函数将 25 的列表变成 5 个 block ,每 block 5 个,共 5 个单独的行

python - 有没有办法从 python 中获取数据库的模式?

python - 是否可以将一维张量转换为列表? ( tensorflow )

python - 如何处理 django 表单中的 'auto-now' 字段?

python - 如何在 tkinter 中显式调整帧大小?

python - 将 json 文件传递​​给 Python 中的方法