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
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
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
Metadata
Release files for filetype 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| filetype-1.2.0.tar.gz | 998.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| filetype-1.2.0-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / filetype-1.2.0.tar.gz
| Download URL | filetype-1.2.0.tar.gz |
|---|---|
| Size | 998.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb
|
|
BLAKE2b-256 checksum How to use checksums |
bb29745f7d30d47fe0f251d3ad3dc2978a23141917661998763bebb6da007eb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.2
|
Release files / filetype-1.2.0-py2.py3-none-any.whl
| Download URL | filetype-1.2.0-py2.py3-none-any.whl |
|---|---|
| Size | 20.0 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25
|
|
BLAKE2b-256 checksum How to use checksums |
18791b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.2
|
Security for filetype 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.