filetype.py Documentation

repository·master·Indexed 20 days ago

https://github.com/h2non/filetype.py

A lightweight, dependency-free Python package for inferring file types and MIME types by inspecting magic number signatures of files or byte buffers using the filetype.guess() function.

Tokens
1.8K
Snippets
3
Records
3
Agent score
23%

What's inside filetype.py

  1. Install filetype via pip

    master

    Install the filetype package using pip to enable file type and MIME type inference via magic number signature checking.

    pip install filetype
  2. Infer file type and MIME type with filetype.guess()

    master

    Use filetype.guess() to identify a file's type. You can pass a file path or a buffer (bytes) to the function. If the file type cannot be determined, it returns None.

    When a match is found, it returns an object containing:

    • extension: The file extension (e.g., jpg).
    • mime: The MIME type (e.g., image/jpeg).
    import filetype
    
    def main():
        # You can pass a file path or a buffer of bytes
        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()
  3. Reference of supported file types

    master

    The following file types are supported by filetype. Each entry maps an extension to its corresponding MIME type.

    ### Image
    - **dwg** - `image/vnd.dwg`
    - **xcf** - `image/x-xcf`
    - **jpg** - `image/jpeg`
    - **jpx** - `image/jpx`
    - **jxl** - `image/jxl`
    - **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`
    - **qoi** - `image/qoi`
    - **dds** - `image/dds`
    
    ### 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-woff2`
    - **ttf** - `application/font-sfnt`
    - **otf** - `application/font-sfnt`
    
    ### Application
    - **wasm** - `application/wasm`