web-dev-qa-db-fra.com

AttributeError: l'objet 'module' n'a pas d'attribut 'urlretrieve'

J'essaie d'écrire un programme qui téléchargera des mp3 d'un site Web, puis les réunira, mais chaque fois que j'essaierai de télécharger les fichiers, j'obtiendrai l'erreur suivante:

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

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

Comme vous utilisez Python 3, il n’ya plus de module urllib. Il a été divisé en plusieurs modules.

Ce serait équivalent à urlretrieve:

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

urlretrieve se comporte exactement de la même façon que dans Python 2.x, donc ça fonctionnera très bien.

Fondamentalement:

  • urlretrieve enregistre le fichier dans un fichier temporaire et renvoie un tuple (filename, headers)
  • urlopen renvoie un objet Request dont la méthode read renvoie une chaîne d'octets contenant le contenu du fichier
128
dom0

Une solution compatible 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")
6
Martin Thoma

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'

Ensuite, vous devriez 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)
0
Amir Md Amiruzzaman