AttributeError:“模块”对象没有属性“urlretrieve”
Posted
技术标签:
【中文标题】AttributeError:“模块”对象没有属性“urlretrieve”【英文标题】:AttributeError: 'module' object has no attribute 'urlretrieve' 【发布时间】:2013-07-31 10:06:52 【问题描述】:我正在尝试编写一个程序,该程序将从网站上下载 mp3,然后将它们连接在一起,但每当我尝试下载文件时,都会出现此错误:
Traceback (most recent call last):
File "/home/tesla/PycharmProjects/OldSpice/Voicemail.py", line 214, in <module> main()
File "/home/tesla/PycharmProjects/OldSpice/Voicemail.py", line 209, in main getMp3s()
File "/home/tesla/PycharmProjects/OldSpice/Voicemail.py", line 134, in getMp3s
raw_mp3.add = urllib.urlretrieve("http://www-scf.usc.edu/~chiso/oldspice/m-b1-hello.mp3")
AttributeError: 'module' object has no attribute 'urlretrieve'
导致此问题的行是
raw_mp3.add = urllib.urlretrieve("http://www-scf.usc.edu/~chiso/oldspice/m-b1-hello.mp3")
【问题讨论】:
【参考方案1】:当您使用 Python 3 时,不再有 urllib
模块。它被分成了几个模块。
这相当于urlretrieve
:
import urllib.request
data = urllib.request.urlretrieve("http://...")
urlretrieve
的行为方式与它在 Python 2.x 中的行为方式完全相同,因此可以正常工作。
基本上:
urlretrieve
将文件保存到临时文件并返回一个元组(filename, headers)
urlopen
返回一个 Request
对象,其 read
方法返回一个包含文件内容的字节串
【讨论】:
如果我想将 .mp3 文件下载到列表中,这仍然有效吗? 在浏览谷歌的 tensorflow 机器学习教程时遇到此错误(我是 python 新手,非常感谢您的回答)tensorflow.org/tutorials/mnist/beginners/index.md【参考方案2】:假设您有以下代码行
MyUrl = "www.google.com" #Your url goes here
urllib.urlretrieve(MyUrl)
如果您收到以下错误消息
AttributeError: module 'urllib' has no attribute 'urlretrieve'
那么你应该尝试下面的代码来解决这个问题:
import urllib.request
MyUrl = "www.google.com" #Your url goes here
urllib.request.urlretrieve(MyUrl)
【讨论】:
【参考方案3】:兼容 Python 2+3 的解决方案是:
import sys
if sys.version_info[0] >= 3:
from urllib.request import urlretrieve
else:
# Not Python 3 - today, it is most likely to be Python 2
# But note that this might need an update when Python 4
# might be around one day
from urllib import urlretrieve
# Get file from URL like this:
urlretrieve("http://www-scf.usc.edu/~chiso/oldspice/m-b1-hello.mp3")
【讨论】:
@tim654321 我改了。你是对的,这对于 Python 3 和更高版本来说可能是一样的。 对您的评论的评论(“不是 Python 3...”):由于您正在检查>= 3
,因此对 Python4 的关注是无效的。
@MartinR。或者更确切地说,...,关于 Python 4 的注释应该在 >= 3
块中。以上是关于AttributeError:“模块”对象没有属性“urlretrieve”的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:“模块”对象没有属性“百分位”
无法安装模块 - AttributeError: 'NoneType' 对象没有属性 'loader'