内容类型 text/plain 的文件扩展名为 .ksh?

Python 2.7:


>>> from mimetypes import guess_extension

>>> guess_extension('text/plain')

'.ksh'

蟒蛇 3.5:


>>> from mimetypes import guess_extension

>>> guess_extension('text/plain')

'.c'

我怎样才能得到有效的答案?


对我来说“.txt”很合适。


甚至文件类型库也无法处理这个:-(


见https://github.com/h2non/filetype.py/issues/30


茅侃侃
浏览 208回答 2
2回答

慕神8447489

虽然提到了这个问题mimetypes.guess_extension,但实际上无法用该模块中的信息来回答。mime 类型到扩展的映射是一对多的,mimetypes数据库中没有权重信息,按字母顺序对扩展进行排序可以给出一致的答案,但显然不是 OP 想要的。我考虑了以下选项:根据权威,IANA DB没有每种类型的扩展信息,只有少数类型具有此信息并且需要努力解析。按受欢迎程度,我希望有一个。根据共识,一个名为“不完整的 MIME 类型列表”的 MDN wiki 页面是最接近的:它是积极维护的,它只列出了一些知名 mime 类型的一个扩展。我想实际的解决方案是,从前面提到的 MDN wiki 中获取表格,对这些类型进行硬编码,mimetypes.guess_extension用作后备。

Smart猫小萌

要使用 Python 3 和 2 获得一致的输出,您需要使用guess_all_extensions输出并对其进行排序:>>> from mimetypes import guess_all_extensions>>> sorted(guess_all_extensions('text/plain'))['.asc', '.bat', '.c', '.cc', '.conf', '.cxx', '.el', '.f90', '.h', '.hh', '.hxx', '.ksh', '.log', '.pl', '.pm', '.text', '.txt'].txt 是最后一项。有点奇怪,这些还没有排序,因为guess_extension只是采用第一个任意扩展名,因此您观察到不同的输出。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python