1. ホーム
  2. python-3.x

[解決済み】 AttributeError: 'module' オブジェクトには 'urlretrieve' という属性がありません。

2022-01-28 10:17:17

質問

ウェブサイトから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 を使用しているため、Python 3 には urllib モジュールはもうありません。いくつかのモジュールに分割されました。

と同等となる。 urlretrieve :

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

urlretrieve はPython 2.xのときとまったく同じように振る舞うので、問題なく動作するでしょう。

基本的には

  • urlretrieve ファイルを一時ファイルに保存し、タプルを返します。 (filename, headers)
  • urlopen が返されます。 Request オブジェクトの read メソッドは、ファイルの内容を含むバイト列を返します。