如何通过Python判断文件类型

1 投票
3 回答
1592 浏览
提问于 2025-04-16 16:10

一开始,我试着这样做(希望能在头部获取一些有用的信息):

>>content=open("fileurl","rb").read()

我发现PNG(png)文件的头部是这样的:89504E47(我不知道这是否正确)
但是当我这样做的时候,结果是:

>>> content[:20]
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01\x90'

那个\x是什么?
希望有人能帮忙!非常感谢!

3 个回答

0

\x89表示这个值不是一个可以直接显示的ASCII字符。

\r\n也是ASCII字符,但它们没有“明显”的图形符号。

可以看看这个链接了解更多:http://docs.python.org/reference/lexical_analysis.html#string-literals

1

你看到的是Python字符串中的一个转义字节。\x89表示一个值为89(十六进制)或137(十进制)的单个字节。

>>> ord('\x89')
137
>>> 0x89
137
>>> chr(137)
'\x89'
4

'\x89' 是一个表示不可打印字节的方式,它的值是 0x89(也就是 137)。

至于在 Python 中查找文件类型,已经有一个叫做 mimetypes 的模块可以用来做这个。

import mimetypes
type, subtype = mimetypes.guess_type(filename_or_url)

下面是它的实际应用:

>>> mimetypes.guess_type('http://upload.wikimedia.org/wikipedia/commons/9/9a/PNG_transparency_demonstration_2.png')
('image/png', None)

撰写回答