如何通过Python判断文件类型
一开始,我试着这样做(希望能在头部获取一些有用的信息):
>>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)