使用Python确定文件格式
识别文件类型的一般方法是查看其扩展名。但一般情况并非如此。这种通过将扩展名与文件类型相关联来识别文件的标准由一些操作系统系列(主要是 Windows)强制执行。其他操作系统,如 Linux(及其变体)使用幻数 r 来识别文件类型。一个神奇的数字 是一个常数值,用于文件的标识。此方法在命名文件时提供了更大的灵活性,并且不强制 扩展的存在。幻数有利于识别文件,因为有时文件可能没有正确的文件扩展名(或可能根本没有)。
在本文中,我们将学习如何使用Python通过扩展名识别文件。我们将使用Python Magic 库为我们的程序提供此类功能。要安装库,请在操作系统的命令解释器中执行以下命令:-
pip install python-magic
出于演示目的,我们将使用具有以下内容的文件名pple.jpg :-
从内容上看,该文件是一个 HTML 文件。但由于它以 .jpg 扩展名保存,操作系统将无法识别其实际文件类型。所以这个文件适合我们的程序。
Python3
import magic
# printing the human readable type of the file
print(magic.from_file('apple.jpg'))
# printing the mime type of the file
print(magic.from_file('apple.jpg', mime = True))
输出:
HTML document, ASCII text, with CRLF line terminators
text/html
解释:
首先我们导入魔法库。然后我们使用magic.from_file()方法来获得人类可读的文件类型。之后我们使用mime=True属性来获得文件的 mime 类型。
使用上述代码时需要考虑的事项:
- 该代码适用于 Linux 和 Mac OS。但是在这些操作系统上存在一个名为file的内置终端命令,它提供与该程序相同的功能,而无需安装任何其他库。
- 使用扩展名的文件类型识别也存在于较新版本的库中。
- 由于文件类型识别通常是通过文件头的指纹查找来进行的,因此不需要加载整个文件进行类型识别。文件的一小部分也可以使用magic.from_buffer()作为参数提供,并使用open('file.ext', 'rb').read(n)传递文件的初始字节(仅在知道的情况下推荐文件类型的标题格式)。