Skip to main content

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

Project description

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

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

  • 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

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/m4a

  • ogg - audio/ogg

  • flac - audio/x-flac

  • wav - audio/x-wav

  • amr - audio/amr

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

Font

  • woff - application/font-woff

  • woff2 - application/font-woff

  • ttf - application/font-sfnt

  • otf - application/font-sfnt

Application

  • wasm - application/wasm

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

filetype-1.0.8.tar.gz (804.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

filetype-1.0.8-py2.py3-none-any.whl (16.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file filetype-1.0.8.tar.gz.

File metadata

  • Download URL: filetype-1.0.8.tar.gz
  • Upload date:
  • Size: 804.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.2

File hashes

Hashes for filetype-1.0.8.tar.gz
Algorithm Hash digest
SHA256 77df14879b73fd9711b8bd4f465dadf2ecdafff0eac3b22c0bdb0ccba68db316
MD5 7a3d033164caeb95322fd63d697a10a8
BLAKE2b-256 bda34614adb1f46f43f0da0e2b8ed1544bc63279662794331b32a83f164ffdef

See more details on using hashes here.

File details

Details for the file filetype-1.0.8-py2.py3-none-any.whl.

File metadata

  • Download URL: filetype-1.0.8-py2.py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.2

File hashes

Hashes for filetype-1.0.8-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 eb974519c5dbbd678a9fbfb5e2616105c6768ee9c01ce4a4ecaefc141e50d5e5
MD5 1f3dcae9ce8dc3077930a24151e59b19
BLAKE2b-256 ab1081f21c5ff8ba74031ebd158a2d64a03a03e228ccc4a3f04a835831c5f90b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page