روز
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
روز
ساعت
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ساعت
دقیقه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
دقیقه
ثانیه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ثانیه

می‌خواهیم برنامه‌ای بنویسیم که با کمک آن بتوانیم فایل‌های خود را مدیریت کنیم.

نیاز‌هایی که باید این فایل منیجر برطرف کند عبارتند از:

  • ساخت یک پوشه جدید
  • ساخت یک فایل جدید
  • جستجو کردن بر اساس نام فایل
  • حذف فایل
  • بازیابی فایل

با توجه به نیازمندی‌هایی که در بالا گفته شد، یک کلاس با نام FileManager تعریف کنید که همه متدهای جدول زیر را طبق رفتار توضیح داده شده پیاده‌سازی کند.

class FileManager:
    def find(self, name, address):
        pass

    def create_file(self, name, address):
        pass

    def create_dir(self, name, address):
        pass

    def delete(self, name, address):
        pass

    def restore(self, name):
        pass
Python
source.py
رفتار خروجی متد
یک پوشه جدید با نام name در آدرس address می سازد. - create_dir(name, address)
یک فایل جدید با نام name در آدرس address ایجاد می کند . - create_file(name, address)
یک فایل با نام name را از آدرس address حذف می کند . - delete(name, address)
آدرس تمام فایل های با نام name را از آدرس address به بعد برمیگرداند ‌‍‍‍List find(name, address)
فایل با نام name را بازیابی می کند. - restore(name)

توضیحات بیشتر

  • در متد create_dir در صورت عدم وجود پوشه باید پوشه‌ای جدید ساخته شود در غیر این صورت نباید هیچ اتفاقی بیفتد!
  • در متد create_file در صورت عدم وجود فایل باید فایلی جدید ساخته شود در غیر این صورت نباید هیچ اتفاق دیگری بیفتد!
  • در متد delete در صورت عدم وجود فایل نباید هیچ اتفاقی بیفتد!
  • در متد find باید یک لیست از تمام آدرس‌ها برگردانده شود و در صورت عدم وجود فایلی با این نام، یک لیست خالی برگردانده شود. ترتیب این آدرس‌ها اهمیتی ندارد.
  • آدرس‌های برگردانده شده از متد find باید از آدرس موجود در آرگومان‌ها به بعد باشد (آدرس شامل خود آرگومان نیز می‌باشد). .دقت شود که ممکن است فایلی در سطوح پایین تر از سطح اول نیز موجود باشد.
  • متد restore
    • فایل بازیابی شده باید در آدرس قبلی خود قرار گیرد.
    • اگر چند فایل هم نام بصورت متوالی حذف شوند باید با هربار صدا زدن متد restore فایل‌ها به صورت متوالی و با عکس ترتیب حذف، بازیابی شوند.
    • باید در عمل حذف و بازیابی محتوای فایل حفظ شود.
    • در صورت عدم وجود فایلی برای بازیابی نباید هیچ اتفاقی بیفتد.
  • برای حل این سوال می‌توانید هر فایل و یا پوشه دیگری که خواستید بسازید.

نمونه

متدهای create_dir و create_file

fm = FileManager()
fm.create_dir('test', '.')
fm.create_dir('test1', 'test')
fm.create_dir('test2', 'test/test1/')

fm.create_file('test.txt', 'test')
fm.create_file('test.txt', 'test/test1')
fm.create_file('test.txt', 'test/test1/test2')
Python
source.py

خروجی:‌ باید پوشه‌ها و فایل‌های زیر ایجاد شوند.

test
├── test1
│   ├── test2
│   │   └── test.txt
│   └── test.txt
└── test.txt
Python
terminal

متد find

print(fm.find('test.txt', 'test'))
Python
source.py

خروجی

['test/test.txt', 'test/test1/test.txt', 'test/test1/test2/test.txt']
Python
terminal

متدهای delete و restore

fm.delete('test.txt', 'test')
fm.delete('test.txt', 'test/test1/')
fm.delete('test.txt', 'test/test1/test2')
fm.restore('test.txt')
fm.restore('test.txt')
Python
source.py

خروجی

test
├── test1
   ├── test2
   │   └── test.txt
   └── test.txt
Python
terminal

نکات

  • می‌توانید فایل اولیه این سوال را از این لینک دریافت کنید.
  • غیر از متد find که در آن باید لیست فایل‌های مورد نظر را بازگردانید، در بقیه‌ی متدها نیازی به چاپ یا برگرداندن مقداری نیست.

نحوه ارسال

شما باید کلاس FileManager موجود در فایل source.py را تکمیل و سپس این فایل را ارسال کنید.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.