البرمجة

ضغط ملفات CSV باستخدام GZIP في Pandas

في محاولتك لكتابة إطار البيانات إلى ملف CSV مضغوط بتقنية GZIP في مكتبة Pandas الخاصة بلغة Python، يظهر أنك تواجه بعض الصعوبات في تحقيق هذا الهدف. الشيفرة التي وفرتها لديها بعض الأمور التي يمكن تحسينها لضمان نجاح عملية الضغط بشكل صحيح.

للبداية، يبدو أن الكود الحالي ينشئ ملفًا بامتداد “.csv.gz”، ولكنه لا يقوم بفعل الضغط بشكل فعلي، بل يعتبر الملف الناتج كملف CSV عادي. يمكن تحسين هذا الجزء من الشيفرة عن طريق استخدام مكتبة gzip في طريقة أكثر صحة.

إليك تعديل على الكود الخاص بك يقوم بتحقيق الضغط بشكل صحيح:

python
import pandas as pd import datetime import csv import gzip import io # Get data (with previous connection and script variables) df = pd.read_sql_query(script, conn) # Create today's date, to append to file todaysdatestring = str(datetime.datetime.today().strftime('%Y%m%d')) print(todaysdatestring) # Create csv content as bytes in memory csv_buffer = io.StringIO() df.to_csv(csv_buffer, sep='|', header=True, index=False, quoting=csv.QUOTE_ALL, quotechar='"', doublequote=True, line_terminator='\n') # Compress the CSV content with gzip.open('foo-%s.csv.gz' % todaysdatestring, 'wb') as output: output.write(csv_buffer.getvalue().encode('utf-8'))

يقوم الكود المعدل بتخزين محتوى الملف CSV في ذاكرة باستخدام `io.StringIO()`، ثم يقوم بضغط هذا المحتوى باستخدام مكتبة gzip ويخزنه في ملف بامتداد “.csv.gz”.

باستخدام هذا التعديل، يجب أن يتم إنشاء ملف GZIP بشكل صحيح ويحتوي على محتوى CSV المضغوط. يُفضل أيضًا التأكد من صحة البيانات التي تم استرجاعها من قاعدة البيانات باستخدام الطرق المناسبة.

المزيد من المعلومات

تحتاج إلى متابعة الكود الخاص بك باهتمام لضمان أن عملية الضغط تتم بنجاح وأن الملف الناتج هو ملف GZIP صحيح. فيما يلي شرح إضافي لبعض النقاط المهمة:

  1. استخدام io.StringIO(): يتم استخدام `io.StringIO()` لتخزين محتوى الملف CSV في الذاكرة. هذا يساعد في إعداد البيانات للضغط دون الحاجة إلى إنشاء ملف CSV مؤقت على القرص الصلب.
  2. less
    <li><strong>ضغط البيانات:strong> تقوم `gzip.open` بفتح ملف GZIP جديد وتقوم بكتابة البيانات المضغوطة فيه. يتم تشفير البيانات بواسطة `encode('utf-8')` لضمان التوافق مع تنسيق GZIP.li> <li><strong>التحقق من البيانات:strong> يفضل أن تقوم بالتحقق من صحة البيانات التي تم استرجاعها من قاعدة البيانات باستخدام `df.head()` أو وسائل أخرى للتحقق من أن البيانات المسترجعة تتناسب مع توقعاتك.li> <li><strong>التأكد من الامتداد:strong> تحقق من أن الملف الناتج يحمل الامتداد ".csv.gz" بشكل صحيح، وذلك لضمان أنه تم استخدام تقنية GZIP بنجاح.li>

باستخدام هذه النصائح، يمكنك تحسين وتكامل الكود لتحقيق أقصى قدر من الكفاءة والدقة في عملية ضغط ملف CSV باستخدام تقنية GZIP في مكتبة Pandas.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر