गुण: 'मॉड्यूल' ऑब्जेक्ट में कोई विशेषता नहीं है 'urlretrieve'


82

मैं एक प्रोग्राम लिखने की कोशिश कर रहा हूं जो एक वेबसाइट के एमपी 3 को डाउनलोड करेगा और फिर उन्हें एक साथ जोड़ देगा लेकिन जब भी मैं उन फ़ाइलों को डाउनलोड करने की कोशिश करता हूं तो मुझे यह त्रुटि मिलती है:

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

जैसा कि आप पायथन 3 का उपयोग कर रहे हैं, अब कोई urllib मॉड्यूल नहीं है। इसे कई मॉड्यूल में विभाजित किया गया है।

यह urlretrieve के बराबर होगा:

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

urlretrieve बिल्कुल वैसा ही व्यवहार करता है जैसा कि उसने पायथन 2.x में किया था, इसलिए यह ठीक काम करेगा।

मूल रूप से:

  • urlretrieve फ़ाइल को अस्थायी फ़ाइल में सहेजता है और टपल लौटाता है (filename, headers)
  • urlopenएक ऐसी Requestवस्तु लौटाता है जिसकी readविधि फाइल सामग्री वाले बाइटस्ट्रिंग को लौटाती है

2
अगर मैं एक सूची में .mp3 फ़ाइलों को डाउनलोड करना चाहता था तो क्या यह अभी भी काम करेगा?
Sike1217

3
इस त्रुटि जब गूगल tensorflow मशीन सीखने ट्यूटोरियल के माध्यम से काम (मैं अजगर तो आपका जवाब बहुत सराहना कर रहा है के लिए नए हूँ) भर में दौड़ा tensorflow.org/tutorials/mnist/beginners/index.md
क्रिस स्मिथ

10

एक अजगर 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 मैंने इसे बदल दिया है। आप सही हैं, एक मौका है कि यह पायथन 3 और बाद के संस्करणों के लिए समान होगा।
मार्टिन थोमा

आपकी टिप्पणी के लिए एक टिप्पणी ("पायथन 3 नहीं ..."): जब से आप जाँच कर रहे हैं >= 3, पायथन 4 के बारे में चिंता एक वैध नहीं है।
मार्टिन आर।

@MartinR या नहीं, ..., अजगर 4 के बारे में नोट >= 3इसके बजाय ब्लॉक में होने चाहिए ।
जेसी चिशोल्म

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)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.