Amyth
Amyth

Reputation: 32949

How can i get a file extension from a filetype?

I have a list of filenames as follows

files = [
    '/dl/files/4j55eeer_wq3wxxpiqm.jpg',
    '/home/Desktop/hjsd03wnsbdr9rk3k',
    'kd0dje7cmidj0xks03nd8nd8a3',
    ...
]

The problem is most of the files do not have an extension in the filenames, what would be the best way to get file extension of these files ?

I don't know if this is even possible because python would treat all files as buffer or string objects that do not have any filetype associated with them.

can this be done at all ?

Upvotes: 12

Views: 15454

Answers (3)

Pavithra B
Pavithra B

Reputation: 191

The below code worked for me :

import filetype

fileinfo = filetype.guess(mock.jpg) #the argument can be buffer/file
detectedExt = fileinfo.extension
detectedmime = fileinfo.mime

filetype package documentation

Upvotes: 2

Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Reputation: 798526

Once you use magic to get the MIME type, you can use mimetypes.guess_extension() to get the extension for it.

Upvotes: 17

John Zwinck
John Zwinck

Reputation: 249123

It can be done if you have an oracle that determines file types from their content. Happily at least one such oracle is already implemented in Python: https://github.com/ahupp/python-magic

Upvotes: 3

Related Questions