Project: filetype

Infer file type and MIME type of any file/buffer. No external dependencies.

Project Details

Latest version
1.2.0
Home Page
https://github.com/h2non/filetype.py
PyPI Page
https://pypi.org/project/filetype/

Project Popularity

PageRank
0.00546857184156539
Number of downloads
976111

filetype.py |Build Status| |PyPI| |Pyversions| |API|

Small and dependency free Python_ package to infer file type and MIME type checking the magic numbers_ signature of a file or buffer.

This is a Python port from filetype_ Go package.

Features

  • Simple and friendly API
  • Supports a wide range_ of file types
  • Provides file extension and MIME type inference
  • File discovery by extension or MIME type
  • File discovery by kind (image, video, audio…)
  • Pluggable_: add new custom type matchers
  • Fast_, even processing large files
  • Only first 261 bytes representing the max file header is required, so you can just pass a list of bytes_
  • Dependency free (just Python code, no C extensions, no libmagic bindings)
  • Cross-platform file recognition

Installation

::

pip install filetype

API

See annotated API reference_.

Examples

Simple file type checking ^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: python

import filetype

def main():
    kind = filetype.guess('tests/fixtures/sample.jpg')
    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()

Supported types

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

.. _Python: http://python.org .. magic numbers: https://en.wikipedia.org/wiki/Magic_number(programming)#Magic_numbers_in_files .. _filetype: https://github.com/h2non/filetype .. _wide range: #supported-types .. _Pluggable: #add-additional-file-type-matchers .. _Fast: #benchmarks .. _pass a list of bytes: #file-header .. _annotated API reference: https://h2non.github.io/filetype.py/

.. |Build Status| image:: https://travis-ci.org/h2non/filetype.py.svg?branch=master :target: https://travis-ci.org/h2non/filetype.py .. |PyPI| image:: https://img.shields.io/pypi/v/filetype.svg?maxAge=2592000?style=flat-square :target: https://pypi.python.org/pypi/filetype .. |Pyversions| image:: https://img.shields.io/pypi/pyversions/filetype.svg?style=flat-square :target: https://pypi.python.org/pypi/filetype .. |API| image:: https://img.shields.io/badge/api-docs-green.svg :target: https://h2non.github.io/filetype.py