Reputation: 32949
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
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
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
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