Как я могу получить размер файла в Интернете, зная только URL - PullRequest
2 голосов
/ 30 августа 2010

Я хочу получить размер файла http: // .., прежде чем загрузить его. Я не знаю, как использовать http-запрос.

Спасибо!

Ответы [ 4 ]

13 голосов
/ 30 августа 2010
import urllib2
f = urllib2.urlopen("http://your-url")
size= f.headers["Content-Length"]
print size
10 голосов
/ 30 августа 2010

Метод HTTP HEAD был изобретен для подобных сценариев (желающих знать данные об ответе без извлечения самого ответа). Если сервер возвращает заголовок Content-Length (и поддерживает HEAD), тогда вы можете узнать размер файла (в октетах), посмотрев на возвращенную Content-Length.

5 голосов
/ 27 апреля 2011

Вот полный ответ:

import urllib2
f = urllib2.urlopen ("http://your-url")
if "Content-Length" in f.headers:
    size = int (f.headers["Content-Length"])
else:
    size = len (f.read ());
print size
4 голосов
/ 30 августа 2010

Не все страницы имеют заголовок длины содержимого. В этом случае единственный вариант - прочитать всю страницу:

len(urllib2.urlopen('http://www.google.com').read());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...