0Pricing
Python Academy · درس

كتابة CSV باستخدام csv.DictWriter

اكتب البيانات المنظّمة إلى CSV باستخدام DictReader وDictWriter

كتابة CSV باستخدام csv.DictWriter درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

مقدمة

تكتب csv.writer وcsv.DictWriter بيانات Python بتنسيق CSV، وتتعاملان تلقائيًا مع الاقتباس والمحدِّدات.

أساسيات csv.writer

يكتب csv.writer(f).writerow(row) صفًا واحدًا. أما writerows(rows) فيكتب عدة صفوف.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
writer.writerow(['name', 'age'])
writer.writerow(['Alice', 30])
print(buf.getvalue())

سلوك الاقتباس

تُقتبس الحقول التي تحتوي على فواصل أو علامات اقتباس تلقائيًا افتراضيًا. ويقتبس quoting=csv.QUOTE_ALL كل حقل.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, quoting=csv.QUOTE_ALL)
writer.writerow(['Alice', 'NYC, NY', 30])
print(buf.getvalue())

csv.DictWriter

يكتب DictWriter القواميس على شكل صفوف. حدّد fieldnames. ويكتب writeheader() عناوين الأعمدة.
import csv, io
buf = io.StringIO()
fields = ['name', 'age']
writer = csv.DictWriter(buf, fieldnames=fields)
writer.writeheader()
writer.writerow({'name': 'Alice', 'age': 30})
print(buf.getvalue())

استخدام writerows() لعدة صفوف

يُعد writer.writerows(list_of_rows) أكثر كفاءة من استدعاء writerow() داخل حلقة.
import csv, io
buf = io.StringIO()
writer = csv.DictWriter(buf, fieldnames=['x','y'])
writer.writeheader()
writer.writerows([{'x':1,'y':2},{'x':3,'y':4}])
print(buf.getvalue())

محدِّد مخصص

يكتب csv.writer(f, delimiter='\t') قيمًا مفصولة بعلامات الجدولة (TSV).
import csv, io
buf = io.StringIO()
writer = csv.writer(buf, delimiter='\t')
writer.writerow(['a', 'b', 'c'])
print(repr(buf.getvalue()))

المعامل extrasaction

يتجاهل DictWriter(f, fieldnames, extrasaction='ignore') بصمت المفاتيح الإضافية في القاموس بدلًا من رفع ValueError.
import csv, io
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name'], extrasaction='ignore')
w.writeheader()
w.writerow({'name': 'Alice', 'extra': 'ignored'})
print(buf.getvalue())

الكتابة إلى ملف فعلي

with open('out.csv','w',newline='',encoding='utf-8') as f: — استخدموا دائمًا newline='' وحدّدوا الترميز.
import csv, tempfile, os
tmp = tempfile.mktemp(suffix='.csv')
with open(tmp, 'w', newline='') as f:
    csv.writer(f).writerows([[1,2],[3,4]])
print(open(tmp).read())
os.unlink(tmp)

الإلحاق بملف CSV

يُلحق open(file, 'a') البيانات بالملف. احذر من كتابة صف العناوين مرة أخرى عند الإلحاق.
import csv, io
buf = io.StringIO()
w = csv.writer(buf)
w.writerow(['x', 'y'])
print(buf.getvalue())

كتابة كبيرة متدفقة

اكتب صفًا في كل مرة — لا تجمع جميع الصفوف في الذاكرة قبل الكتابة.
import csv, io
buf = io.StringIO()
writer = csv.writer(buf)
for i in range(5):
    writer.writerow([i, i**2])
print(buf.getvalue())

اختبار الذهاب والإياب

اكتب البيانات إلى CSV ثم اقرأها مرة أخرى للتحقق من صحتها.
import csv, io
original = [{'name':'Alice','age':'30'},{'name':'Bob','age':'25'}]
buf = io.StringIO()
w = csv.DictWriter(buf, fieldnames=['name','age'])
w.writeheader()
w.writerows(original)
buf.seek(0)
read_back = list(csv.DictReader(buf))
print(read_back == original)

تحقق سريع

أيّ أسلوب في DictWriter يكتب أسماء الأعمدة بوصفها الصف الأول؟

مراجعة

csv.writer: ‏writerow/writerows. DictWriter: ‏writeheader + writerow/writerows. افتح الملفات دائمًا باستخدام newline=''. استخدم extrasaction='ignore' مع القواميس المرنة.

تابع التقدّم

أحسنتم! انتقلوا إلى الدرس التالي.

الأسئلة الشائعة

هل درس «كتابة CSV باستخدام csv.DictWriter» مجاني؟

نعم — نص درس «كتابة CSV باستخدام csv.DictWriter» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «كتابة CSV باستخدام csv.DictWriter»؟

اكتب البيانات المنظّمة إلى CSV باستخدام DictReader وDictWriter تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «كتابة CSV باستخدام csv.DictWriter»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ترميز JSON وفك ترميزه
  2. التعامل مع هياكل JSON المتداخلة
  3. قراءة CSV باستخدام csv.reader
  4. كتابة CSV باستخدام csv.DictWriter
← العودة إلى Python Academy