假设您想要在某个地方保存一堆文件,例如在blob中。假设您希望通过网页分发这些文件,并让客户端自动打开正确的应用程序/查看器。
假设:浏览器通过HTTP响应中的mime-type (content-type?)报头确定要使用哪个应用程序/查看器。
基于这个假设,除了文件的字节外,还需要保存MIME类型。
如何找到文件的MIME类型?我现在用的是Mac,但这应该也适用于Windows。
浏览器是否在将文件发布到网页时添加此信息?
是否有一个简洁的python库来查找这些信息?WebService还是(更好的)一个可下载的数据库?
@toivotuo的方法在python3下工作得最好,最可靠。我的目标是识别那些没有可靠的.gz扩展名的gzip文件。我安装了python3-magic。
import magic
filename = "./datasets/test"
def file_mime_type(filename):
m = magic.open(magic.MAGIC_MIME)
m.load()
return(m.file(filename))
print(file_mime_type(filename))
对于一个gzip文件,它返回:
应用程序/ gzip;charset =二进制
对于解压缩的TXT文件(iostat数据):
文本/平原;charset = us - ascii
对于tar文件:
应用程序/ x-tar;charset =二进制
对于bz2文件:
应用程序/ x-bzip2;charset =二进制
最后但并非最不重要的一个。zip文件:
应用程序/邮政编码;charset =二进制
Python 3参考:https://docs.python.org/3.2/library/mimetypes.html
mimetypes.guess_type(url, strict=True) Guess the type of a file based
on its filename or URL, given by url. The return value is a tuple
(type, encoding) where type is None if the type can’t be guessed
(missing or unknown suffix) or a string of the form 'type/subtype',
usable for a MIME content-type header.
encoding is None for no encoding or the name of the program used to
encode (e.g. compress or gzip). The encoding is suitable for use as a
Content-Encoding header, not as a Content-Transfer-Encoding header.
The mappings are table driven. Encoding suffixes are case sensitive;
type suffixes are first tried case sensitively, then case
insensitively.
The optional strict argument is a flag specifying whether the list of
known MIME types is limited to only the official types registered with
IANA. When strict is True (the default), only the IANA types are
supported; when strict is False, some additional non-standard but
commonly used MIME types are also recognized.
import mimetypes
print(mimetypes.guess_type("sample.html"))
@toivotuo的方法在python3下工作得最好,最可靠。我的目标是识别那些没有可靠的.gz扩展名的gzip文件。我安装了python3-magic。
import magic
filename = "./datasets/test"
def file_mime_type(filename):
m = magic.open(magic.MAGIC_MIME)
m.load()
return(m.file(filename))
print(file_mime_type(filename))
对于一个gzip文件,它返回:
应用程序/ gzip;charset =二进制
对于解压缩的TXT文件(iostat数据):
文本/平原;charset = us - ascii
对于tar文件:
应用程序/ x-tar;charset =二进制
对于bz2文件:
应用程序/ x-bzip2;charset =二进制
最后但并非最不重要的一个。zip文件:
应用程序/邮政编码;charset =二进制