参考:https://www.geeksforgeeks.org/determining-file-format-using-python/
安装
pip install python-magic -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install filetype -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
Debian12
apt install libmagic-dev
macOS 来源:https://github.com/Yelp/elastalert/issues/1927
pip install python-magic-bin -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
python-magic 使用方式
import magic
# printing the human readable type of the file
print(magic.from_file('apple.jpg'))
或者
guess = magic.from_buffer(bdata, mime=True) # guess="video/mp4"
执行结果
HTML document, ASCII text, with CRLF line terminators
输出 mime
# printing the mime type of the file
print(magic.from_file('apple.jpg', mime = True))
执行结果:
text/html
imghdr 使用方式
来源:https://stackoverflow.com/questions/22493063/python-how-to-use-stringio-with-imghdr-to-determine-if-valid-image
with open(filepath, 'rb') as fd:
guess = imghdr.what(fd)
文件的二进制数据
guess = imghdr.what(None, bdata)
filetype 使用方式
来源:https://pypi.org/project/filetype/
安装
pip install filetype -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
使用
import filetype
def main():
kind = filetype.guess('tests/fixtures/sample.jpg') # 文件 path,或文件二进制数据
if kind is None:
print('Cannot guess file type!')
return
print('File extension: %s' % kind.extension)
print('File MIME type: %s' % kind.mime)
if __name__ == '__main__':
main()
-
kind.mime
-
kind.extension
支持的类型
Image
- dwg - image/vnd.dwg
- xcf - image/x-xcf
- jpg - image/jpeg
- jpx - image/jpx
- png - image/png
- apng - image/apng
- gif - image/gif
- webp - image/webp
- cr2 - image/x-canon-cr2
- tif - image/tiff
- bmp - image/bmp
- jxr - image/vnd.ms-photo
- psd - image/vnd.adobe.photoshop
- ico - image/x-icon
- heic - image/heic
- avif - image/avif
Video
- 3gp - video/3gpp
- mp4 - video/mp4
- m4v - video/x-m4v
- mkv - video/x-matroska
- webm - video/webm
- mov - video/quicktime
- avi - video/x-msvideo
- wmv - video/x-ms-wmv
- mpg - video/mpeg
- flv - video/x-flv
Audio
- aac - audio/aac
- mid - audio/midi
- mp3 - audio/mpeg
- m4a - audio/mp4
- ogg - audio/ogg
- flac - audio/x-flac
- wav - audio/x-wav
- amr - audio/amr
- aiff - audio/x-aiff
Archive
- br - application/x-brotli
- rpm - application/x-rpm
- dcm - application/dicom
- epub - application/epub+zip
- zip - application/zip
- tar - application/x-tar
- rar - application/x-rar-compressed
- gz - application/gzip
- bz2 - application/x-bzip2
- 7z - application/x-7z-compressed
- xz - application/x-xz
- pdf - application/pdf
- exe - application/x-msdownload
- swf - application/x-shockwave-flash
- rtf - application/rtf
- eot - application/octet-stream
- ps - application/postscript
- sqlite - application/x-sqlite3
- nes - application/x-nintendo-nes-rom
- crx - application/x-google-chrome-extension
- cab - application/vnd.ms-cab-compressed
- deb - application/x-deb
- ar - application/x-unix-archive
- Z - application/x-compress
- lzo - application/x-lzop
- lz - application/x-lzip
- lz4 - application/x-lz4
- zstd - application/zstd
Document
- doc - application/msword
- docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document
- odt - application/vnd.oasis.opendocument.text
- xls - application/vnd.ms-excel
- xlsx - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
- ods - application/vnd.oasis.opendocument.spreadsheet
- ppt - application/vnd.ms-powerpoint
- pptx - application/vnd.openxmlformats-officedocument.presentationml.presentation
- odp - application/vnd.oasis.opendocument.presentation
Font
- woff - application/font-woff
- woff2 - application/font-woff
- ttf - application/font-sfnt
- otf - application/font-sfnt
Application
- wasm - application/wasm