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

كيف يمكنني استخدام Python للبحث بكفاءة عن الملفات عبر أدلة متعددة؟

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

How can I use Python to efficiently search for files across multiple directories?

البحث عن ملف في بايثون

يمكن أن يمثل العثور على الملفات في بايثون تحديًا عندما يختلف موقع الملف عبر أنظمة مختلفة. لحسن الحظ، توفر Python وحدة os.walk التي تمكنك من اجتياز الأدلة وتحديد موقع الملفات بسهولة.

os.walk للبحث عن الملفات

يقوم os.walk بإنشاء مولد. كائن يتكرر على الدليل وأدلته الفرعية، مما ينتج عنه ثلاث صفوف لكل تكرار:

  • root (str): المسار المطلق إلى التيار الدليل
  • dirs (قائمة): قائمة الدلائل الفرعية داخل الدليل الحالي
  • الملفات (قائمة): قائمة الملفات داخل الدليل الحالي

البحث ملف واحد

للعثور على التواجد الأول لملف معين، ما عليك سوى التكرار على المجموعات الناتجة والتحقق مما إذا كان اسم الملف موجودًا في قائمة الملفات:

import os

def find(name, path):
    for root, dirs, files in os.walk(path):
        if name in files:
            return os.path.join(root, name)

البحث عن جميع تكرارات الملف

للعثور على جميع تكرارات الملف، قم بإنشاء قائمة لتخزين المطابقات :

def find_all(name, path):
    result = []
    for root, dirs, files in os.walk(path):
        if name in files:
            result.append(os.path.join(root, name))
    return result

مطابقة أنماط الملفات

للبحث عن الملفات التي تطابق نمطًا ما، استخدم وحدة fnmatch:

import os, fnmatch
def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                result.append(os.path.join(root, name))
    return result

find('*.txt', '/path/to/dir')
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3