9

Content-Lengthメタ変数から値を取得したい。ダウンロードするファイルのサイズを取得する必要があります。しかし、最後の行はエラーを返します。 HTTPMessageobject has no attribute getheaders.

import urllib.request
import http.client

#----HTTP HANDLING PART----
 url = "http://client.akamai.com/install/test-objects/10MB.bin"

file_name = url.split('/')[-1]
d = urllib.request.urlopen(url)
f = open(file_name, 'wb')

#----GET FILE SIZE----
meta = d.info()

print ("Download Details", meta)
file_size = int(meta.getheaders("Content-Length")[0])
4

6 に答える 6

13

Python 3 を使用していて、Python 2.x のコードやドキュメントを読んでいるようです。文書化は不十分ですがgetheaders、Python 3 にはメソッドはなく、get_allメソッドのみです。

このバグレポートを参照してください。

于 2012-10-21T08:51:37.863 に答える
7

の場合Content-Length:

file_size = int(d.getheader('Content-Length'))
于 2012-10-21T14:56:41.073 に答える
4

次の使用を検討する必要がありますRequests

import requests

url = "http://client.akamai.com/install/test-objects/10MB.bin"
resp = requests.get(url)

print resp.headers['content-length']
# '10485760'

Python 3 の場合は、次を使用します。

print(resp.headers['content-length'])

代わりは。

于 2012-10-21T08:51:21.743 に答える
2

response.headers['Content-Length']Python 2 と 3 の両方で動作します:

#!/usr/bin/env python
from contextlib import closing

try:
    from urllib2 import urlopen
except ImportError: # Python 3
    from urllib.request import urlopen


with closing(urlopen('http://stackoverflow.com/q/12996274')) as response:
    print("File size: " + response.headers['Content-Length'])
于 2015-07-23T00:28:29.200 に答える
0
import urllib.request

link = "<url here>"

f = urllib.request.urlopen(link)
meta = f.info()
print (meta.get("Content-length"))
f.close()

Python 3.x で動作

于 2015-07-22T17:31:26.357 に答える