2013-07-31 44 views
34

Tôi đang cố gắng viết chương trình sẽ tải xuống mp3 của một trang web sau đó ghép chúng lại với nhau nhưng bất cứ khi nào tôi cố gắng tải xuống tệp, tôi nhận được lỗi này:AttributeError: đối tượng 'module' không có thuộc tính 'urlretrieve'

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' 

dòng đó gây ra vấn đề này là

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

Trả lời

87

Như bạn đang sử dụng Python 3, không có mô-đun urllib nữa. Nó đã được chia thành nhiều mô-đun.

này sẽ tương đương với urlretrieve:

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

urlretrieve cư xử chính xác theo cùng một cách như nó đã làm trong Python 2.x, vì vậy nó sẽ chỉ làm việc tốt.

Về cơ bản:

  • urlretrieve lưu các tập tin vào một tập tin tạm thời và trả về một tuple (filename, headers)
  • urlopen trả về một đối tượng Requestread phương thức trả về một bytestring chứa các nội dung tập tin
+1

Nếu Tôi muốn tải về các tập tin .mp3 vào một danh sách này sẽ vẫn làm việc? – Sike1217

+1

Xem câu trả lời đã chỉnh sửa của tôi;) – dom0

+2

Rượt qua lỗi này khi làm việc thông qua hướng dẫn tìm hiểu về máy tensorflow của google (Tôi mới sử dụng python để câu trả lời của bạn được đánh giá cao) http://www.tensorflow.org/tutorials/mnist/beginners/ index.md –

4

Một Giải pháp tương thích Python 2 + 3 là:

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

@ tim654321 Tôi đã thay đổi nó. Bạn nói đúng, có một cơ hội rằng điều này sẽ giống nhau đối với Python 3 và các phiên bản mới hơn. –

+0

Nhận xét cho nhận xét của bạn ("Không phải Python 3 ..."): Vì bạn đang kiểm tra '> = 3', mối quan ngại liên quan đến Python4 không phải là hợp lệ. –

1

Giả sử bạn có dòng mã sau đây

MyUrl = "www.google.com" #Your url goes here 
urllib.urlretrieve(MyUrl) 

Nếu bạn nhận được thông báo lỗi sau

AttributeError: module 'urllib' has no attribute 'urlretrieve' 

Sau đó, bạn nên cố gắng sau mã để khắc phục vấn đề:

import urllib.request 
MyUrl = "www.google.com" #Your url goes here 
urllib.request.urlretrieve(MyUrl) 
Các vấn đề liên quan