"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تنزيل ملف من عنوان URL مخزَّن كسلسلة في Python 3؟

كيفية تنزيل ملف من عنوان URL مخزَّن كسلسلة في Python 3؟

تم النشر بتاريخ 2024-11-20
تصفح:263

How to Download a File from a URL Stored as a String in Python 3?

كيفية تنزيل ملف من الويب في Python 3 باستخدام عنوان URL مخزّن في سلسلة

عند محاولة تنزيل ملف من ملف خادم الويب في Python 3، قد يؤدي تمرير سلسلة كعنوان URL إلى حدوث خطأ يتطلب إدخال وحدات البايت. تقدم هذه المقالة عدة طرق للتحايل على هذه المشكلة واسترداد الملف بنجاح.

باستخدام urllib.request.urlopen

للحصول على محتويات صفحة ويب، استخدم urllib .request.urlopen(). تقوم هذه الدالة بإرجاع كائن استجابة، والذي يمكن بعد ذلك قراءته في متغير:

import urllib.request

url = 'http://example.com/'
response = urllib.request.urlopen(url)
data = response.read()  # a `bytes` object

استخدام urlib.request.urlretrieve

الطريقة الأكثر مباشرة لتنزيل ملف وحفظه هي الاستفادة منه وظيفة urllib.request.urlretrieve:

import urllib.request

url = 'http://example.com/file.txt'
urllib.request.urlretrieve(url, 'file.txt')
تقوم هذه الطريقة بتنزيل الملف من عنوان URL المحدد وحفظه محليًا باسم 'file.txt'.

استخدام urlib.request.urlopen مع Shutil.copyfileobj

لمزيد من التحكم في عملية التنزيل، استخدم urllib.request.urlopen() لإرجاع كائن يشبه الملف. يمكن بعد ذلك نسخ هذا الكائن إلى ملف حقيقي باستخدام Shutil.copyfileobj():

import urllib.request
import shutil

url = 'http://example.com/file.zip'
with urllib.request.urlopen(url) as response, open('file.zip', 'wb') as out_file:
    shutil.copyfileobj(response, out_file)

تخزين التنزيل بالبايت

إذا كانت السرعة هي الأولوية، فيمكن تخزين البيانات التي تم تنزيلها مباشرة في كائن بايت وبالتالي مكتوبًا في ملف، على الرغم من أن هذا مناسب فقط للملفات الصغيرة:

import urllib.request

url = 'http://example.com/icon.png'
with urllib.request.urlopen(url) as response, open('icon.png', 'wb') as out_file:
    data = response.read() # a `bytes` object
    out_file.write(data)

يمكن أيضًا استخدام التعامل مع الملفات المضغوطةurllib.request.urlopen() للتعامل مع الملفات المضغوطة، بشرط أن يدعم الخادم الوصول العشوائي:

استيراد urllib.request استيراد gzip عنوان URL = "http://example.com/archive.gz" مع urllib.request.urlopen(url) كرد: مع gzip.GzipFile(fileobj=response) غير مضغوط: file_header = uncompressed.read(64) # كائن `بايت`
import urllib.request
import gzip

url = 'http://example.com/archive.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # a `bytes` object
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3