باستخدام بيثون ، كيف يمكنني الحصول على مجموعة من معلومات الملف الأجسام, بناء على البحث عن ملفات النظام ؟

StackOverflow https://stackoverflow.com/questions/1617666

  •  06-07-2019
  •  | 
  •  

سؤال

حاليا لدي باش السيناريو الذي يدير find الأمر مثل ذلك:

find /storage/disk-1/Media/Video/TV -name *.avi -mtime -7

هذا يحصل على قائمة من البرامج التلفزيونية التي تمت إضافتها إلى النظام الخاص بي في آخر 7 أيام.ثم أذهب إلى خلق بعض الارتباطات الرمزية حتى أستطيع الحصول على أحدث البرامج التلفزيونية.

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

كيف يمكنني إجراء بحث على نظام الملفات (يجب أن أتصل find?) الذي يعطيني مجموعة من معلومات الملف الكائنات (التي تحتوي على تاريخ تعديل اسم الملف ، الخ) لدرجة أنني قد فرزها على أساس التاريخ ، وغيرها من مثل هذه الأمور ؟

هل كانت مفيدة؟

المحلول

import os, time

allfiles = []
now = time.time()

# walk will return triples (current dir, list of subdirs, list of regular files)
# file names are relative to dir at first
for dir, subdirs, files in os.walk("/storage/disk-1/Media/Video/TV"):
    for f in files:
        if not f.endswith(".avi"):
            continue
        # compute full path name
        f = os.path.join(dir, f)
        st = os.stat(f)
        if st.st_mtime < now - 3600*24*7:
            # too old
            continue
        allfiles.append((f, st))

وهذا سوف نعود كل الملفات التي تجد عاد أيضا، وقائمة من أزواج (اسم الملف، نتيجة القانون الأساسي).

نصائح أخرى

ونظر في وحدة نظام التشغيل: os.walk هي وظيفة التي يمشي نظام الملفات، os.path هو وحدة الذي يعطي وقت أخر تعديل الملفات وغيرها من المعلومات الملف. كما يعرف os.path الكثير من الوظائف للتحليل وتقسيم أسماء الملفات.

وأيضا من الفائدة، وحدة غلوب يحدد وظائف ل "globbing" سلاسل (مطابقة سلسلة باستخدام يونكس البدل قواعد)

ومن هذا، بناء قائمة من ملف مطابقة بعض المعايير يجب أن تكون سهلة.

  • يمكنك استخدام "البحث" من خلال "subprocess" وحدة نمطية.
  • بعد ذلك استخدم "تقسيم" سلسلة وظيفة تشريح كل سطر
  • لكل ملف استخدام نظام التشغيل وحدة (مثلا ، getmtime.... الخ) للحصول على معلومات الملف

أو

  • استخدام "السير" و "غلوب" وحدات للحصول على مسار الملف في الكائنات
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top