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