it-swarm.dev

AttributeError: كائن "module" ليس له سمة "urlretrieve"

أحاول كتابة برنامج يقوم بتنزيل ملفات 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")
58
Sike1217

نظرًا لأنك تستخدم Python 3 ، لم تعد هناك وحدة urllib. تم تقسيمه إلى عدة وحدات.

هذا سيكون مكافئًا لـ urlretrieve:

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

يتصرف urlretrieve بنفس الطريقة التي اتبعتها في Python 2.x ، لذلك ستعمل على ما يرام.

في الأساس:

  • urlretrieve يحفظ الملف إلى ملف مؤقت وإرجاع Tuple (filename, headers)
  • urlopen بإرجاع كائن Request الذي ترجع منه read إلى اختبار فرعي يحتوي على محتويات الملف
144
dom0

الحل المتوافق مع 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")
6
Martin Thoma

افترض أن لديك أسطر التعليمات البرمجية التالية

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)
0
Amir Md Amiruzzaman