قراءة ملف CSV عبر وسيط باستخدام pandas وRequests
اجلب ملف CSV عبر نقل Requests مهيأ، وتحقق من نتيجة HTTP، وقدّم إلى pandas مخزن بايتات للتحليل.
عندما يحتاج مسار HTTP إلى تحكم صريح في الوسيط، اجلب ملف CSV أولاً واترك pandas يتعامل مع البايتات الناتجة:
from io import BytesIO
import pandas as pd
import requests
route = {
'http': 'http://proxy.example:8080',
'https': 'http://proxy.example:8080',
}
with requests.get(
'https://data.example/report.csv',
proxies=route,
timeout=(5, 30),
) as response:
response.raise_for_status()
frame = pd.read_csv(BytesIO(response.content), encoding='utf-8')
يتولى الوسيط النقل؛ وتوفّر قائمة وسطاء HTTP مرشحي نقاط النهاية لمسار HTTP عام. يستقبل pandas كائنًا شبيهًا بالملف ويطبّق خياراته المعتادة للفاصل والأعمدة والترميز وأنواع البيانات.
التحقق من نتيجة HTTP قبل التحليل يمنع معاملة جسم خطأ HTTP واضح كجدول. افحص أيضًا المحتوى غير المتوقع: فقد تعيد صفحة تسجيل دخول أو سياسة الرمز 200 وتبقى HTML بدلاً من ملف CSV المطلوب.
في عناوين URL من نوع HTTP، تُمرَّر storage_options الخاصة بـread_csv كترويسات طلب. تلك الواجهة ليست خريطة proxies على طراز Requests.
لا يملك المخزن اسم أرشيف يوجّه استنتاج الضغط. حدّد compression عندما تتطلبه الحمولة المسترجعة. يعمل ترتيب الجلب أولاً نفسه مع read_excel ومخزن بايتات، باستخدام محرك الجداول المناسب لذلك التنسيق.
يحتفظ هذا المثال بالاستجابة كاملة في الذاكرة. بالنسبة إلى تصدير كبير، بثّه إلى ملف محلي مُدار وحلّل ذلك الملف، مع التقسيم إلى أجزاء حيث يدعم سير عمل البيانات ذلك.