从python 3.2中的文件中获取"Content-Length"值的文件大小

sca*_*ous 7 python http urllib python-3.x

我想Content-Length从元变量中获取值.我需要获取我要下载的文件的大小.但是最后一行返回错误,HTTPMessage对象没有属性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])
Run Code Online (Sandbox Code Playgroud)

Kru*_*lur 10

看起来您正在使用Python 3,并且已经阅读了Python 2.x的一些代码/文档.它的文档很少,但getheadersPython 3中没有方法,只有一种get_all方法.

请参阅此错误报告.

  • @freshtop:`d.getheader()`和`d.getheaders()`都可以在Python 3.2上运行.注意:OP在这里使用`d.info()`而不是`d`.`d.info().getheader()`和`d.info().getheaders()`是Python 2代码.为了支持Python 2和3,可以使用[`d.headers ['Content-Length']`(http://stackoverflow.com/a/31576222). (2认同)

nic*_*nor 5

用于Content-Length:

file_size = int(d.getheader('Content-Length'))
Run Code Online (Sandbox Code Playgroud)


小智 5

将最后一行更改为:

file_size = int(meta.get_all("Content-Length")[0])
Run Code Online (Sandbox Code Playgroud)