تقدم Python ، وهي لغة برمجة متعددة الاستخدامات وقوية ، مجموعة كبيرة من الميزات والأدوات لتبسيط المهام المعقدة. إحدى هذه الميزات هي المولدات ، وهي نوع خاص من التكرار يسمح لك بإنشاء سلسلة من القيم أثناء الطيران ، بدلاً من إنشاء قائمة كاملة في وقت واحد. يمكن أن يكون هذا مفيدًا بشكل خاص عند العمل مع الملفات الكبيرة ، لأنه يمكّنك من معالجة البيانات بشكل تدريجي ، وحفظ الذاكرة وتحسين الأداء. كمورد للمولد ، رأيت عن كثب الفوائد التي يمكن للمولدات إحضارها إلى ملفات القراءة. في منشور المدونة هذا ، سأرشدك خلال عملية استخدام المولدات لقراءة الملفات في بيثون ، مع تسليط الضوء على مزاياها وتقديم أمثلة عملية.
فهم المولدات
قبل أن نغوص في قراءة الملفات ، دعنا نفهم أولاً ما هي المولدات وكيف تعمل. في Python ، المولد هو وظيفة تستخدمأَثْمَرالكلمة الرئيسية بدلا منيعود. عند استدعاء وظيفة المولد ، فإنها تُرجع كائن المولد ، والذي يمكن تكراره باستخدام ألحلقة أوالتالي()وظيفة. في كل مرةأَثْمَرتتم مواجهة الكلمة الرئيسية في وظيفة المولد ، ويتم حفظ حالة الوظيفة ، ويتم إرجاع القيمة المحنطة. في المرة التالية التي يتم فيها تكرار المولد ، تستأنف الوظيفة التنفيذ من حيث توقفت.
إليك مثال بسيط لوظيفة المولد:
def simple_generator (): العائد 1 العائد 2 العائد 3 gen = simple_generator () للقيمة في Gen: print (القيمة)
في هذا المثال ،Simple_generatorالوظيفة هي مولد يعطي القيم 1 و 2 و 3. عندما ننشئ مثيل المولد باستخدامgen = simple_generator ()، يمكننا التكرار فوقه باستخدام ألحلقة ، التي تطبع كل قيمة عند إنشاؤها.
مزايا استخدام المولدات لقراءة الملفات
عندما يتعلق الأمر بقراءة الملف ، تقدم المولدات العديد من المزايا على الأساليب التقليدية. فيما يلي بعض الفوائد الرئيسية:
كفاءة الذاكرة
واحدة من المزايا الرئيسية لاستخدام المولدات لقراءة الملف هي كفاءة الذاكرة الخاصة بهم. عندما تقرأ ملفًا كبيرًا باستخدام طريقة تقليدية ، مثل قراءة الملف بأكمله في قائمة ، تحتاج إلى تخصيص ذاكرة كافية لتخزين الملف بأكمله في الذاكرة في وقت واحد. يمكن أن تكون هذه مشكلة إذا كان الملف كبيرًا جدًا بحيث لا يتناسب مع الذاكرة ، مما يؤدي إلى ملفالذاكرة. مع المولدات ، يمكنك قراءة سطر الملف حسب السطر ، ومعالجة كل سطر أثناء قراءته ، دون الحاجة إلى تخزين الملف بأكمله في الذاكرة.


أداء
يمكن للمولدات أيضًا تحسين أداء عمليات قراءة الملفات. نظرًا لأن المولدات تنشئ قيمًا أثناء التنقل ، فيمكنها البدء في معالجة البيانات على الفور ، دون الحاجة إلى انتظار قراءة الملف بأكمله في الذاكرة. يمكن أن يكون هذا مفيدًا بشكل خاص عند العمل مع الملفات الكبيرة ، لأنه يتيح لك بدء معالجة البيانات بمجرد توفرها ، بدلاً من انتظار تحميل الملف بالكامل.
تقييم كسول
تستخدم المولدات تقييمًا كسولًا ، مما يعني أنها تولد قيمًا فقط عند الحاجة إليها. يمكن أن يكون هذا مفيدًا عندما تحتاج فقط إلى معالجة مجموعة فرعية من البيانات في ملف ، حيث يتيح لك تخطي بيانات غير ضرورية دون الحاجة إلى قراءتها في الذاكرة.
استخدام المولدات لقراءة الملف
الآن بعد أن نفهم مزايا استخدام المولدات لقراءة الملفات ، دعونا نلقي نظرة على كيفية استخدامها في الممارسة العملية. فيما يلي مثال على استخدام مولد لقراءة سطر ملف حسب السطر:
def read_file_line_by_line (file_path): مع open (file_path ، 'r') كملف: للحصول على سطر في الملف: LIND LINE FILE_PATH = 'LAGE_FILE.TXT' gen = read_file_line_by_line (file_path) للخط في gen: print (strip ()))
في هذا المثال ،read_file_line_by_lineالوظيفة هي مولد يقرأ سطر ملف حسب السطر. المعيتم استخدام العبارة لفتح الملف في وضع القراءة ، ولتتكرر الحلقة على كل سطر في الملف. ثم يتم إنتاج كل سطر باستخدامأَثْمَرالكلمة الرئيسية ، التي تسمح للوظيفة باستئناف التنفيذ من حيث توقفت في المرة التالية التي يتم فيها تكرارها.
عندما نقوم بإنشاء مثيل للمولد باستخدامgen = read_file_line_by_line (file_path)، يمكننا التكرار فوقه باستخدام ألحلقة ، التي تطبع كل سطر كما يتم إنشاؤه. اليجرد()يتم استخدام الطريقة لإزالة أي مسافة بيضاء رائدة أو زائدة من كل سطر.
معالجة الملفات الكبيرة مع المولدات
عند العمل مع الملفات الكبيرة ، من الضروري في كثير من الأحيان معالجة البيانات في أجزاء بدلاً من الخط حسب الخط. يمكن القيام بذلك باستخدام مولد يقرأ عدد محدد من الخطوط في وقت واحد. إليك مثال على استخدام مولد لقراءة ملف في قطع:
def read_file_in_chunks (file_path ، chunk_size = 100): مع open (file_path ، 'r') كملف: chunk = [] للخط في الملف: chunk.append (سطر) إذا len (chunk) == chunk_size: chunk chunk = [] قطعة في الجنرال: # معالجة جزء من الخطوط للخط في قطعة: print (line.strip ())
في هذا المثال ،read_file_in_chunksالوظيفة هي مولد يقرأ ملفًا في أجزاء من الحجم المحدد. الchunk_sizeتحدد المعلمة عدد الخطوط التي يجب قراءتها في كل قطعة. اللتتكرر الحلقة على كل سطر في الملف ، وإضافة كل سطر إلىقطعةقائمة. عندماقطعةتصل القائمة إلى الحجم المحدد ، ويتم العائد باستخدامأَثْمَرالكلمة الرئيسية ، وقطعةيتم إعادة تعيين القائمة.
عندما نقوم بإنشاء مثيل للمولد باستخدامgen = read_file_in_chunks (file_path)، يمكننا التكرار فوقه باستخدام ألحلقة ، والتي تعالج كل جزء من الخطوط عند توليدها.
خاتمة
في الختام ، تعد المولدات أداة قوية ومرنة لقراءة الملفات في Python. أنها توفر العديد من المزايا على الأساليب التقليدية ، بما في ذلك كفاءة الذاكرة والأداء والتقييم الكسول. باستخدام المولدات ، يمكنك معالجة الملفات الكبيرة بشكل تدريجي ، دون الحاجة إلى تخزين الملف بأكمله في الذاكرة. كمورد للمولد ، أشجعك على استكشاف فوائد استخدام المولدات في مشاريع Python الخاصة بك ، خاصة عند العمل مع الملفات الكبيرة.
إذا كنت مهتمًا بمعرفة المزيد عن المولدات أو لديك أي أسئلة حول منتجاتنا ، فيرجى عدم التردد في ذلكاتصل بنالمناقشة المشتريات. نحن هنا لمساعدتك في العثور على الحلول الصحيحة لاحتياجاتك.
مراجع
- وثائق Python: https://docs.python.org/3/tutorial/classes.html#generators
- Python الحقيقي: https://realpython.com/introduction-to-python-generators/
- رش الطائرات بدون طيار الزراعة:/machinery/machinery




