Obtenir la taille du fichier à l'aide de python-demandes, alors que seulement obtenir l'en-tête
J'ai regardé les demandes de documentation, mais je n'arrive pas à trouver quoi que ce soit. Comment puis-je demander l'en-tête, afin que je puisse évaluer la taille du fichier?
Vous devez vous connecter pour publier un commentaire.
Envoyer un TÊTE de demande:
Une requête HEAD est comme une requête GET qui ne télécharger que les en-têtes. Notez que c'est le serveur fait l'honneur de votre TÊTE de la demande. Certains serveurs ne pourra répondre à la demande, de sorte que vous aurez à envoyer une requête GET et il suffit de fermer la connexion au lieu de télécharger le corps. D'autres fois, le serveur vient jamais spécifie la taille totale du fichier.
content-length
, parfois la réponse est générée à l'aide deTransfer-Encoding: chunked
, auquel cas il n'y a aucun moyen de savoir combien de temps la réponse serait à moins que vous obtenez en fait l'ensemble de la réponse.urllib.urlopen(url).info()['content-length']
, donc pas exactement ce que je voulais.utilisation
requests.get(url, stream=True).headers['Content-length']
stream=True
signifie que lorsque la fonction retourne, seulement l'en-tête de réponse est téléchargé, le corps de la réponse n'est pas.Les deux
requests.get
etrequest.head
pouvez obtenir vous-têtes, mais il y a un avantage de l'utilisationget
get
est plus flexible, si vous souhaitez télécharger le corps de la réponse après l'inspection de la longueur, vous pouvez commencer par simplement accéder à lacontent
de la propriété ou à l'aide d'uniterator
qui va télécharger le contenu en morceauxvoici un exemple d'obtenir la longueur d'un MIT des cours vidéo