私はウェブサイトから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")
Python 3を使用しているため、urllibモジュールはもうありません。複数のモジュールに分割されています。
これはurlretrieveと同等です。
import urllib.request
data = urllib.request.urlretrieve("http://...")
urlretrieveはPython 2.xとまったく同じように動作するため、正常に機能します。
基本的に:
urlretrieve
はファイルを一時ファイルに保存し、タプル(filename, headers)
を返しますurlopen
は、Request
メソッドがファイルの内容を含むバイト文字列を返すread
オブジェクトを返します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")
次のコード行があるとします
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)