Python 为什么要使用各种JPEG扩展?

Python 为什么要使用各种JPEG扩展?,python,mime-types,image,jpeg,Python,Mime Types,Image,Jpeg,在使用下载程序时,我在Python的mimetypes.guess_extension函数中遇到了以下问题: In [2]: mimetypes.guess_extension('image/jpeg', strict=False) Out[2]: '.jpe' 我知道jpeg和jpg是有效的jpeg扩展,但我不知道jpe。因此,查看维基百科网站确实揭示了以下几点: 使用JPEG压缩的文件最常见的文件扩展名是.jpg和.JPEG,但也使用.jpe、.jfif和.jif 甚至更多我不知道的扩展

在使用下载程序时,我在Python的
mimetypes.guess_extension
函数中遇到了以下问题:

In [2]: mimetypes.guess_extension('image/jpeg', strict=False)
Out[2]: '.jpe'
我知道jpeg和jpg是有效的jpeg扩展,但我不知道jpe。因此,查看维基百科网站确实揭示了以下几点:

使用JPEG压缩的文件最常见的文件扩展名是.jpg和.JPEG,但也使用.jpe、.jfif和.jif

甚至更多我不知道的扩展

那么主要的问题是:为什么JPEG有这么多(有效的)扩展与之相关


在一个相关的注释中,我想知道为什么Python会返回“jpe”,而不是“jpg”或“jpeg”,因为我看到它们使用得最多。

它似乎是
mimetypes。guess_extension
返回所有可能扩展中的第一个:

def guess_extension(self, type, strict=True):
    # ...
    extensions = self.guess_all_extensions(type, strict)
    if not extensions:
        return None
    return extensions[0]
因此,您将得到由
mimetypes返回的列表中的第一个。猜测所有扩展名,结果是:

>>> mimetypes.guess_all_extensions('image/jpeg', strict=False)
['.jpe', '.jpg', '.jpeg']
关于为什么
.jpe
我的猜测也是正确的:

在DOS和早期Windows版本中,文件名只能有8个字符和3个字符作为扩展名(更多信息,请参阅Wikipedia上的文章)。可能是他们把JPEG缩写为.JPE或.JPE,这就是为什么我们现在有.JPE、.JPEG和.jpg


确实,.jpeg和.jpg更为常见。

从严格意义上讲,jpeg是一种图像压缩算法,而不是一种文件格式

JFIF(JPEG文件交换格式)是使用JPEG压缩的常用文件格式。 EXIF(可交换图像文件格式)是另一种使用jpeg的格式,用于数码相机。 大多数人倾向于认为这些格式是相同的,但事实并非如此


TIFF也可以进行jpeg编码。

虽然信息是真实的,但根本无法回答问题。请。。。它询问了为什么要使用几个扩展名,包括“.jfif”,因此我解释了jfif以及它与jpeg相比的含义。8.3 dos限制可能解释“.jpe”,但这只是问题的一部分。好的,所以答案部分相关,但有一些不相关的信息被压碎了(EXIF在这里并不真正相关)与具体Python问题的联系缺失。也许我反应过度了,但话说回来:这只是一个否决票;-)根据最初的问题,这只是“主要问题”。我想我需要使用exit和tiff示例来解释jfif不是唯一的jpeg编码文件格式。这只是一票否决票,但答案是正确的。