如何使用python查找文件的实际文件扩展名

如何使用python查找文件的实际文件扩展名,python,Python,假设我有一个文件test.pdf,但我将扩展名改为jpeg,这样该文件现在是test.jpeg。实际文件格式仍应为pdf文件,因为pdf的文件签名为25 50 44 46 2d,而jpeg的文件签名为FF D8 FF DB或FF D8 FF EE以及其他两种格式 我试过了,并提出了一些建议。但他们似乎都在寻找明显的文件扩展名是什么。比如说, >>> file_name, file_extension = os.path.splitext("/Users/mark/Desktop

假设我有一个文件
test.pdf
,但我将扩展名改为
jpeg
,这样该文件现在是
test.jpeg
。实际文件格式仍应为pdf文件,因为pdf的文件签名为
25 50 44 46 2d
,而jpeg的文件签名为
FF D8 FF DB
FF D8 FF EE
以及其他两种格式

我试过了,并提出了一些建议。但他们似乎都在寻找明显的文件扩展名是什么。比如说,

>>> file_name, file_extension = os.path.splitext("/Users/mark/Desktop/test.jpeg")
>>> file_extension
'.jpeg'
>>> 

如图所示,最后提供的文件扩展名是
.jpeg
,但实际的文件扩展名仍然是
.pdf

对于任何与我有相同问题的人,以下内容对我有效。我必须从一开始就安装
magic


名为
test.jpeg
的文件的“真实”文件扩展名是
.jpeg
。无论文件的实际内容是什么,文件扩展名只是文件名的最后一部分。您需要打开文件并尝试使用fourcc猜测幻数,whatever@khelwood,不是真的,如果有一个论坛允许上传图像,有人用python编写恶意软件,将文件扩展名更改为jpeg并成功上传,那就是一个错误problem@Mark这与我的发言无关。我不是说文件的内容不重要。我是说你的问题暗示了对“文件扩展名”含义的误解。马克,@khelwood想说的是扩展名本身就是文件名的一部分。您应该问的是文件类型是什么。
>>> import magic
>>> magic.from_file("/Users/mark/Desktop/test_copy.jpeg")
'HTML document, ASCII text, with very long lines'