如何通过python知道文件类型

时间:2011-04-21 11:38:54

标签: 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 :(得分: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)

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

\x89表示该值不是可打印的ASCII字符。

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

阅读本文:http://docs.python.org/reference/lexical_analysis.html#string-literals