为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

茅侃侃 2021-09-01 19:33:46
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
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

虽然提到了这个问题mimetypes.guess_extension,但实际上无法用该模块中的信息来回答。mime 类型到扩展的映射是一对多的,mimetypes数据库中没有权重信息,按字母顺序对扩展进行排序可以给出一致的答案,但显然不是 OP 想要的。我考虑了以下选项:

  • 根据权威,IANA DB没有每种类型的扩展信息,只有少数类型具有此信息并且需要努力解析。

  • 按受欢迎程度,我希望有一个。

  • 根据共识,一个名为“不完整的 MIME 类型列表”的 MDN wiki 页面是最接近的:它是积极维护的,它只列出了一些知名 mime 类型的一个扩展。

我想实际的解决方案是,从前面提到的 MDN wiki 中获取表格,对这些类型进行硬编码,mimetypes.guess_extension用作后备。


查看完整回答
反对 回复 2021-09-01
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

要使用 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只是采用第一个任意扩展名,因此您观察到不同的输出。


查看完整回答
反对 回复 2021-09-01
  • 2 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信