如何在Python中获取文件的内容类型?(带网址..)
假设我有一个视频文件:
http://mydomain.com/thevideofile.mp4
我想知道这个文件的头信息和内容类型。用Python来实现。但是,我不想下载整个文件。我希望它能返回:
video/mp4
编辑:这是我做的。你觉得怎么样?
f = urllib2.urlopen(url)
params['mime'] = f.headers['content-type']
3 个回答
0
你可以通过info()方法或者headers字典来获取视频的类型。
f=urllib2.urlopen(url)
print f.headers['Content-Type']
print f.info()
这是一个测试,使用了一个在网上随机找到的avi格式文件,大小超过600Mb。
$ cat test.py
#!/usr/bin/env python
import urllib2
url="http://www.merseypirates.com/rjnsteve/rjnsteve/oem16.avi"
f=urllib2.urlopen(url)
print f.headers['Content-Type']
$ time python test.py
video/x-msvideo
real 0m4.931s
user 0m0.115s
sys 0m0.042s
只有在文件真正被下载的时候,也就是数据包在网络中来回传输时,它才会“占用带宽”。
4
这个回答比Brian的更深入一些。使用urllib这个工具有很多好处,比如它可以自动处理重定向等问题。
import urllib2
class HeadRequest(urllib2.Request):
def get_method(self):
return "HEAD"
url = "http://mydomain.com/thevideofile.mp4"
head = urllib2.urlopen(HeadRequest(url))
head.read() # This will return empty string and closes the connection
print head.headers.maintype
print head.headers.subtype
print head.headers.type