AttributeError : '모듈'개체에 'urlretrieve'속성이 없습니다.


82

웹 사이트에서 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")

답변:


211

Python 3을 사용하고 있으므로 더 이상 urllib 모듈이 없습니다. 여러 모듈로 분할되었습니다.

이것은 urlretrieve와 동일합니다.

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

urlretrieve는 Python 2.x에서와 똑같은 방식으로 작동하므로 잘 작동합니다.

원래:

  • urlretrieve 파일을 임시 파일에 저장하고 튜플을 반환합니다. (filename, headers)
  • urlopen메서드가 파일 내용을 포함하는 바이트 문자열을 반환하는 Request객체를 read반환합니다.

2
.mp3 파일을 목록에 다운로드하려는 경우에도 여전히 작동합니까?
Sike1217 2013

3
구글의 tensorflow 기계 학습 튜토리얼을 통해 작업 할 때 (나는 당신의 대답은 대단히 감사합니다, 그래서 파이썬에 새로 온 사람)이 오류 가로 질러은 tensorflow.org/tutorials/mnist/beginners/index.md
크리스 스미스에게

10

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

@ tim654321 변경했습니다. 맞습니다. Python 3 및 이후 버전에서도 동일 할 가능성이 있습니다.
Martin Thoma

귀하의 의견에 대한 의견 ( "Not Python 3 ...") :을 확인 >= 3하고 있으므로 Python4에 대한 우려는 유효하지 않습니다.
Martin R.

@MartinR. 또는 오히려 ..., Python 4에 대한 메모가 >= 3대신 블록에 있어야합니다 .
Jesse Chisholm

4

다음 코드 줄이 있다고 가정합니다.

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)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.