Предположим я haev видеофайл:
http://mydomain.com/thevideofile.mp4
Как я получаю заголовок и тип контента этого файла? С Python. Но, я не хочу загружать весь файл. я хочу, чтобы это возвратилось:
video/mp4
Править: это - то, что я сделал. Что Вы думаете?
f = urllib2.urlopen(url)
params['mime'] = f.headers['content-type']
, как так:
>>> import httplib
>>> conn = httplib.HTTPConnection("mydomain.com")
>>> conn.request("HEAD", "/thevideofile.mp4")
>>> res = conn.getresponse()
>>> print res.getheaders()
, который будет загружать только и печатать заголовки, потому что он создает голову :
просит ответ, идентичный тому, которое будет соответствовать получить запрос, но без ответа тело. Это полезно для получения Мета-информация написана в ответ заголовки, без необходимости транспортировки весь контент.
(через Wikipedia )
Я полагаю, что один из способов - сделать абстрактные интерфейсные занятия без членов. Затем подкласс FOO и BAR из этих интерфейсных классов.
E.g.:
class FooInterface
{
// methods here
}
class BarInterface
{
// methods here
}
class Foo : public FooInterface
{
BarInterface *pBar;
}
class Bar : public BarInterface
{
FooInterface *pFoo;
}
Это нарушает цикл зависимостей (если сами интерфейсы не зависят друг от друга, и если это так, то они, вероятно, должны быть объявлены в одном файле)
-121--3067614-Это более высокий уровень ответа, чем Брайан. Использование механизма 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
Вы можете получить тип видео, используя метод INFO () или заголовки Dict
f=urllib2.urlopen(url)
print f.headers['Content-Type']
print f.info()
тестовый пробег со случайным образом выбранным файлом AVI, погружаясь в сети, который составляет более 600 МБ
$ 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
, он будет только «взять пропускную способность «Когда файл фактически загружен, то есть пакеты отправляются на разъем и из сокета.