Как я получаю тип контента файла в Python? (с URL..)

Предположим я haev видеофайл:

http://mydomain.com/thevideofile.mp4

Как я получаю заголовок и тип контента этого файла? С Python. Но, я не хочу загружать весь файл. я хочу, чтобы это возвратилось:

video/mp4

Править: это - то, что я сделал. Что Вы думаете?

f = urllib2.urlopen(url)
    params['mime'] =  f.headers['content-type']

6
задан TIMEX 27 January 2010 в 00:24
поделиться

3 ответа

, как так:

>>> import httplib
>>> conn = httplib.HTTPConnection("mydomain.com")
>>> conn.request("HEAD", "/thevideofile.mp4")
>>> res = conn.getresponse()
>>> print res.getheaders()

, который будет загружать только и печатать заголовки, потому что он создает голову :

просит ответ, идентичный тому, которое будет соответствовать получить запрос, но без ответа тело. Это полезно для получения Мета-информация написана в ответ заголовки, без необходимости транспортировки весь контент.

(через Wikipedia )

12
ответ дан 8 December 2019 в 14:43
поделиться

Я полагаю, что один из способов - сделать абстрактные интерфейсные занятия без членов. Затем подкласс 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
4
ответ дан 8 December 2019 в 14:43
поделиться

Вы можете получить тип видео, используя метод 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

, он будет только «взять пропускную способность «Когда файл фактически загружен, то есть пакеты отправляются на разъем и из сокета.

0
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: