Python 如何根据文件名预测文件的mime类型?
此函数用于预测文件的mime类型 根据它的名字。如果无法预测mime类型, 它默认为应用程序/八位字节流,也称为任意二进制。 我想知道是否有一种更通灵/更干净的方法 编写这个函数的方法Python 如何根据文件名预测文件的mime类型?,python,mime-types,mime,Python,Mime Types,Mime,此函数用于预测文件的mime类型 根据它的名字。如果无法预测mime类型, 它默认为应用程序/八位字节流,也称为任意二进制。 我想知道是否有一种更通灵/更干净的方法 编写这个函数的方法 from mimetypes import guess_type def guess_mime(fname): try: return tuple(guess_type(fname)[0].split('/')) except AttributeError: re
from mimetypes import guess_type
def guess_mime(fname):
try:
return tuple(guess_type(fname)[0].split('/'))
except AttributeError:
return 'application', 'octet-stream'
使用图书馆:
通过以下功能轻松安装:
pip install python-magic
使用图书馆:
通过以下功能轻松安装:
pip install python-magic
在这种情况下,我不会使用try/except,因为这并不是真正的异常行为,而只是guess_type作为类型返回None的情况。普通的旧if/else或三元。。。如果其他的更为恰当,使代码的作用更为清晰,后者更为简短:
def guess_mime(fname):
_type, _ = mimetypes.guess_type(fname)
return tuple(_type.split("/")) if _type is not None else "application/octet-stream"
您还可以使用或使用_type,如果_type为false,则可以使用默认值
def guess_mime(fname):
_type, _ = mimetypes.guess_type(fname)
return tuple((_type or "application/octet-stream").split("/"))
当然,在这两种情况下,如果函数也可能返回一个列表,则可能不需要转换为tuple。在这种情况下,我不会使用try/except,因为这不是真正的异常行为,而只是guess\u type作为类型返回None的情况。普通的旧if/else或三元。。。如果其他的更为恰当,使代码的作用更为清晰,后者更为简短:
def guess_mime(fname):
_type, _ = mimetypes.guess_type(fname)
return tuple(_type.split("/")) if _type is not None else "application/octet-stream"
您还可以使用或使用_type,如果_type为false,则可以使用默认值
def guess_mime(fname):
_type, _ = mimetypes.guess_type(fname)
return tuple((_type or "application/octet-stream").split("/"))
当然,在这两种情况下,如果函数也可能返回列表,则可能不需要转换为tuple