如何获取通用文件类型的文件扩展名列表?

10 投票
1 回答
5521 浏览
提问于 2025-04-16 07:41

我想通过MIME类型的第一部分来获取文件扩展名的列表,使用的是mimetypes模块。比如,'image'就是'image/jpeg'、'image/png'等的第一部分。

这是我的代码:

import mimetypes

def get_extensions_for_type(general_type):
    for ext in mimetypes.types_map:
        if mimetypes.types_map[ext].split('/')[0] == general_type:
            yield ext

VIDEO = tuple(get_extensions_for_type('video'))
AUDIO = tuple(get_extensions_for_type('audio'))
IMAGE = tuple(get_extensions_for_type('image'))

print("VIDEO = " + str(VIDEO))
print('')
print("AUDIO = " + str(AUDIO))
print('')
print("IMAGE = " + str(IMAGE))

这是输出结果:

VIDEO = ('.m1v', '.mpeg', '.mov', '.qt', '.mpa', '.mpg', '.mpe', '.avi', '.movie', '.mp4')

AUDIO = ('.ra', '.aif', '.aiff', '.aifc', '.wav', '.au', '.snd', '.mp3', '.mp2')

IMAGE = ('.ras', '.xwd', '.bmp', '.jpe', '.jpg', '.jpeg', '.xpm', '.ief', '.pbm', '.tif', '.gif', '.ppm', '.xbm', '.tiff', '.rgb', '.pgm', '.png', '.pnm')

但是这个结果缺少了很多格式,比如音频的'.flac'。用mimetypes.types_map['.flac'].split('/')[0]可以得到'audio',那么为什么这个没有包含在输出中呢?

1 个回答

7

我找到了解决办法:

使用:

mimetypes.init()

在导入这个模块之后。

这样可以从操作系统中读取额外的mime类型。 (查看Python文档)

撰写回答