"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية قراءة محتويات المجلد بشكل متكرر في بايثون باستخدام وظيفة os.walk()؟

كيفية قراءة محتويات المجلد بشكل متكرر في بايثون باستخدام وظيفة os.walk()؟

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

How to Recursively Read Folder Contents in Python Using the os.walk() Function?

قراءة محتويات المجلد بشكل متكرر في Python

في Python، يمكنك مواجهة مشكلات عند محاولة اجتياز الدلائل بشكل متكرر لقراءة الملفات النصية. المشكلة الشائعة هي التعليمات البرمجية التي تعمل فقط لمستوى دليل واحد.

فهم وظيفة os.walk

يكمن جوهر اجتياز المجلد العودي في Python في نظام التشغيل. وظيفة .walk(). إنه يتكرر على دليل محدد وأدلته الفرعية، ويعيد ثلاث قيم: الجذر، والأديرة الفرعية، والملفات.

  • الجذر: الدليل الحالي قيد المعالجة.
  • الأدلة الفرعية: الأدلة داخل الدليل الحالي الدليل.
  • الملفات: الملفات (وليست الدلائل) في الدليل الحالي.

تحسين اجتياز المجلد

لاجتياز الدلائل بشكل متكرر، يمكنك يجب التكرار من خلال قائمة الدلائل الفرعية التي يتم إرجاعها بواسطة os.walk(). لكل دليل فرعي، يمكنك بعد ذلك استدعاء os.walk() بشكل متكرر لمعالجة محتوياته.

تحسين كود بايثون

يمكن تعديل رمز المثال للتعامل مع أدلة متعددة المستويات:

import os
import sys

walk_dir = sys.argv[1]

for root, subdirs, files in os.walk(walk_dir):
    for subdir in subdirs:
        # Process subdirectory: call os.walk() recursively for subdir
        for sub_subdir, sub_subfiles, _ in os.walk(os.path.join(root, subdir)):
            # Process subdirectories and files in subdirectory

أفضل الممارسات الإضافية

استخدم os.path.join () لتسلسل المسار بدلاً من معالجة السلسلة يدويًا.
  • فكر في تحويل وسيطات البرنامج النصي إلى مسارات مطلقة باستخدام os.path.abspath() لتحقيق الاستقرار.
  • استخدم عبارة with لتبسيط معالجة الملفات وضمان التنظيف التلقائي.
بيان الافراج أعيد طبع هذه المقالة على: 1729233616 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3