107 votes

AttributeError : L'objet 'module' ne possède pas d'attribut 'urlretrieve'.

J'essaie d'écrire un programme qui téléchargera des mp3 à partir d'un site web et les assemblera, mais chaque fois que j'essaie de télécharger les fichiers, j'obtiens cette erreur :

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'

La ligne qui cause ce problème est la suivante

raw_mp3.add = urllib.urlretrieve("http://www-scf.usc.edu/~chiso/oldspice/m-b1-hello.mp3")

258voto

dom0 Points 6748

Puisque vous utilisez Python 3, il n'y a pas de urllib plus de module. Il a été divisé en plusieurs modules.

Cela équivaudrait à urlretrieve :

import urllib.request
data = urllib.request.urlretrieve("http://...")

urlretrieve se comporte exactement de la même manière qu'en Python 2.x, donc il fonctionnera parfaitement.

En gros :

  • urlretrieve enregistre le fichier dans un fichier temporaire et retourne un tuple (filename, headers)
  • urlopen renvoie un Request objet dont read renvoie un bytestring contenant le contenu du fichier

12voto

moose Points 4945

Une solution compatible avec Python 2+3 est :

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")

5voto

Md Amiruzzaman Points 205

Supposons que vous ayez les lignes de code suivantes

MyUrl = "www.google.com" #Your url goes here
urllib.urlretrieve(MyUrl)

Si vous recevez le message d'erreur suivant

AttributeError: module 'urllib' has no attribute 'urlretrieve'

Vous devez alors essayer le code suivant pour résoudre le problème :

import urllib.request
MyUrl = "www.google.com" #Your url goes here
urllib.request.urlretrieve(MyUrl)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X