تمیز کردن سیستم فایل به طور مرتب به صورت دستی خوب نیست. آنها را خودکار کنید!


همانطور که ممکن است فکر کنید حذف پرونده ها و پوشه ها به صورت دستی کار مهیج نیست. منطقی است که آنها را خودکار کنید.

در اینجا پایتون آمده است تا زندگی ما آسانتر شود. پایتون یک زبان برنامه نویسی عالی برای برنامه نویسی است. ما قصد داریم از پایتون استفاده کنیم تا وظیفه خود را بدون هیچ مانعی به پایان برسانیم. ابتدا باید بدانید که چرا پایتون انتخاب خوبی است.

  • پایتون یک زبان مورد علاقه همه زمانه برای خودکارسازی وظایف است
  • کد کمتری در مقایسه با سایر زبان های برنامه نویسی
  • پایتون با تمام سیستم عامل ها سازگار است. می توانید همان کد را در ویندوز ، لینوکس و مک اجرا کنید.
  • پایتون یک ماژول بنام os دارد که به ما در تعامل با سیستم عامل کمک می کند. ما قصد داریم تا از این ماژول برای تکمیل اتوماسیون حذف پرونده ها استفاده کنیم.

ما می توانیم هرگونه کار سیستم آزار دهنده یا تکراری را با استفاده از پایتون جایگزین کنیم. اگر پایتون را می شناسید نوشتن اسکریپت برای انجام یک کار خاص سیستم یک کیک کیک است. بیایید به مورد استفاده زیر توجه کنیم.

توجه: موارد زیر در Python 3.6 تست شده است+

حذف پرونده ها / پوشه های قدیمی تر از X روز

غالباً به سیاهههای قدیمی نیازی ندارید ، و برای اینکه بتوانید ذخیره سازی کنید ، به طور مرتب باید آنها را تمیز کنید. این می تواند هر چیزی باشد و فقط سیاهههای مربوط به آن نیست.

ما روشی به نام stat در ماژول os داریم که جزئیات آخرین دسترسی را ارائه می دهد (st_atime), تغییر (st_mtime), و اصلاح ابرداده (st_ctime) زمان. همه روش ها از زمان عصر به چند ثانیه بر می گردند. می توانید اطلاعات بیشتر در مورد دوره را پیدا کنید اینجا.

ما از روشی به نام os.walk (path) برای گذر از زیر پوشه های پوشه استفاده خواهیم کرد.

برای نوشتن کد برای حذف پرونده ها / پوشه های حذف شده بر اساس تعداد روز ، مراحل زیر را دنبال کنید.

  • ماژول ها را وارد کنید زمان ، سیستم عامل ، شاتل
  • مسیر و روزها را بر روی متغیرها تنظیم کنید
  • با استفاده از تعداد روزها به ثانیه تبدیل کنید زمان (زمان) روش
  • بررسی کنید که آیا مسیر با استفاده از مسیر موجود است یا خیر os.path.exists (مسیر) مدول
  • در صورت وجود مسیر ، لیست پرونده ها و پوشه های موجود در مسیر از جمله زیر پوشه ها را بدست آورید. از روش استفاده کنید os.walk (مسیر), و یک ژنراتور حاوی پوشه ها ، پرونده ها و زیر پوشه ها را برمی گرداند
  • با پیوستن به مسیر فعلی و نام پرونده / پوشه با استفاده از روش ، مسیر پرونده یا پوشه را بگیرید os.path.join ()
  • دریافت کنید ساعت از os.stat (مسیر) روش با استفاده از ویژگی st_ctime
  • مقایسه کنید ساعت با زمانی که قبلاً محاسبه کرده ایم
  • اگر نتیجه بیشتر از روزهای دلخواه کاربر است ، بررسی کنید که آیا این پرونده است یا پوشه. اگر این پرونده است ، از os.remove (مسیر) وگرنه از shutil.rmtree () روش
  • اگر مسیر وجود ندارد ، پیام یافت نشد پیدا کنید

بیایید کد را با جزئیات ببینیم.

# وارد کردن ماژول های مورد نیاز
واردات سیستم عامل
شاتل وارداتی
زمان واردات

# عملکرد اصلی
def اصلی ():

# تنظیم اولیه شمارش
deleted_folders_count = 0
deleted_files_count = 0

# مسیر را مشخص کنید
مسیر = "/ PATH_TO_DELETE"

# روزها را مشخص کنید
روز = 30

# تبدیل روز به ثانیه
# time.time () زمان فعلی را در ثانیه برمی گرداند
seconds = time.time () – (روز * 24 * 60 * 60)

# بررسی اینکه پرونده در مسیر موجود است یا خیر
اگر os.path.exists (مسیر):

# تکرار از هر پوشه و پرونده موجود در مسیر
برای root_folder ، پوشه ها ، پرونده ها در os.walk (مسیر):

# مقایسه روزها
اگر چند ثانیه >= get_file_or_folder_age (root_folder):

# حذف پوشه
remove_folder (root_folder)
حذف شده_ پوشه ها_کامل + = تعداد # افزایشی # #

# شکستن بعد از برداشتن root_folder
زنگ تفريح

دیگری:

# پوشه در حال بررسی از پوشه root
برای پوشه در پوشه ها:

# مسیر پوشه
folder_path = os.path.join (پوشه_ پوشه ، پوشه)

# مقایسه با روزها
اگر چند ثانیه >= get_file_or_folder_age (folder_path):

# با استفاده از تابع remove_folder
remove_folder (folder_path)
حذف شده_ پوشه ها_کامل + = تعداد # افزایشی # #

# بررسی پرونده های فهرست فعلی
برای پرونده در پرونده ها:

# مسیر فایل
file_path = os.path.join (root_folder، پرونده)

# مقایسه روزها
اگر چند ثانیه >= get_file_or_folder_age (file_path):

# با استفاده از تابع remove_file
remove_file (file_path)
حذف شده است # پرونده_count + = تعداد # افزایشی #

دیگری:

# اگر مسیر دایرکتوری نباشد
# مقایسه با روزها
اگر چند ثانیه >= get_file_or_folder_age (مسیر):

# استناد به پرونده
remove_file (مسیر)
حذف شده است # پرونده_count + = تعداد # افزایشی #

دیگری:

# پرونده / پوشه یافت نشد
چاپ (f ‘"{مسیر}" یافت نشد’)
حذف شده است # پرونده_count + = تعداد # افزایشی #

چاپ (f"کل پوشه ها حذف شدند: {حذف شده_ پوشه ها_سفر")
چاپ (f"کل پرونده ها حذف شدند: {deleted_files_count")

def remove_folder (مسیر):

# حذف پوشه
اگر نه shutil.rmtree (مسیر):

# پیام موفقیت
چاپ (f"{path successfully با موفقیت حذف شد")

دیگری:

# پیام شکست
چاپ (f"حذف مسیر able امکان پذیر نیست")

def remove_file (مسیر):

# حذف پرونده
اگر نه os.remove (مسیر):

# پیام موفقیت
چاپ (f"{path successfully با موفقیت حذف شد")

دیگری:

# پیام شکست
چاپ (f"حذف مسیر able امکان پذیر نیست")

def get_file_or_folder_age (مسیر):

# گرفتن ctime پرونده / پوشه
# ساعت در ثانیه خواهد بود
ctime = os.stat (مسیر) .st_ctime

# زمان برگشت
زمان بازگشت

اگر __name__ == ‘__main__’:
اصلی ()

شما باید براساس نیاز ، دو متغیر زیر را در کد بالا تنظیم کنید.

روز = 30
مسیر = "/ PATH_TO_DELETE"

حذف پرونده های بزرگتر از X GB

بیایید پرونده هایی را انتخاب کنید که از اندازه خاصی بزرگتر باشند و آنها را حذف کنیم. این شبیه به فیلمنامه فوق است. در فیلمنامه قبلی ، ما گرفته ایم سن به عنوان یک پارامتر ، و در حال حاضر ما را اندازه به عنوان پارامتر حذف.

# وارد کردن ماژول os
واردات سیستم عامل

# عملکردی که اندازه یک پرونده را باز می گرداند
def get_file_size (مسیر):

# دریافت اندازه پرونده در بایت
اندازه = os.path.getsize (مسیر)

# بازگرداندن اندازه پرونده
اندازه بازگشت

# عملکرد برای حذف یک پرونده
def remove_file (مسیر):

# حذف پرونده
اگر نه os.remove (مسیر):

# موفقیت
چاپ (f"{path successfully با موفقیت حذف شد")

دیگری:

# خطا
چاپ (f"حذف مسیر able امکان پذیر نیست")

def اصلی ():
# مسیر را مشخص کنید
مسیر = "ENTER_PATH_HERE"

# حداکثر اندازه پرونده را در MB قرار دهید
اندازه = 500

# بررسی وجود مسیر وجود دارد یا خیر
اگر os.path.exists (مسیر):

# تبدیل اندازه به بایت
سایز = اندازه * 1024 * 1024

# در حال گذر از زیر پوشه ها
برای root_folder ، پوشه ها ، پرونده ها در os.walk (مسیر):

# تکرار از لیست پرونده ها
برای پرونده در پرونده ها:

# دریافت مسیر فایل
file_path = os.path.join (root_folder، پرونده)

# بررسی اندازه پرونده
اگر get_file_size (پرونده_پایه) >= اندازه:
# با استفاده از تابع remove_file
remove_file (file_path)

دیگری:

# بررسی فقط در صورتی که مسیر پرونده باشد
اگر os.path.isfile (مسیر):
# مسیر یک دایره نیست
# بررسی مستقیم پرونده
اگر get_file_size (مسیر) >= اندازه:
# با استفاده از تابع remove_file
remove_file (مسیر)

دیگری:

# مسیر وجود ندارد
چاپ (f"{path} وجود ندارد")

اگر __name__ == ‘__main__’:
اصلی ()

دو متغیر زیر را تنظیم کنید.

مسیر = "ENTER_PATH_HERE"
اندازه = 500

حذف پرونده هایی با پسوند خاص

ممکن است سناریویی وجود داشته باشد که بخواهید پرونده ها را بر اساس انواع پسوند آنها حذف کنید. بیایید پرونده .log را بگوییم. ما می توانیم پسوند یک فایل را با استفاده از روش os.path.splitext (مسیر) بیابیم. این توپی را که حاوی مسیر و پسوند پرونده است برمی گرداند.

# وارد کردن ماژول سیستم عامل
واردات سیستم عامل

# عملکرد اصلی
def اصلی ():

# مسیر را مشخص کنید
مسیر = "PATH_TO_LOOK_FOR"

# برنامه افزودنی را مشخص کنید
پسوند = ".ورود به سیستم"

# بررسی وجود مسیر وجود دارد یا خیر
اگر os.path.exists (مسیر):

# بررسی کنید که مسیر فهرست است یا نه
اگر os.path.isdir (مسیر):

# تکرار از طریق زیر پوشه ها
برای root_folder ، پوشه ها ، پرونده ها در os.walk (مسیر):

# بررسی پرونده ها
برای پرونده در پرونده ها:

# مسیر فایل
file_path = os.path.join (root_folder، پرونده)

# استخراج پسوند از نام پرونده
file_extension = os.path.splitext (file_path) [1]

# درحال بررسی پرونده_ پسوند
اگر پسوند == پرونده_ پسوند:

# حذف پرونده
اگر نه os.remove (file_path):

# پیام موفقیت
چاپ (f"{file_path successfully با موفقیت حذف شد")

دیگری:

# پیام شکست
چاپ (f"to file_path to حذف نیست")

دیگری:

# مسیر دایرکتوری نیست
چاپ (f"{path} فهرست نیست")

دیگری:

# مسیر وجود ندارد
چاپ (f"{path} وجود ندارد")

اگر __name__ == ‘__main__’:
# استناد به عملکرد اصلی
اصلی ()

فراموش نکنید که متغیر مسیر و فرمت را در کد بالا به روز کنید تا شرایط مورد نیاز خود را برآورده کنید.

من آزمایش اسکریپت ها را در محیط NON PRODUCTION پیشنهاد می کنم. هنگامی که از نتایج راضی شدید ، می توانید از طریق cron (در صورت استفاده از لینوکس) برنامه ریزی کنید تا به طور دوره ای آن را برای کارهای تعمیر و نگهداری انجام دهید. پایتون برای دستیابی به این موارد بسیار عالی است و اگر علاقه مند به یادگیری کارهای بیشتری هستید ، این کار را بررسی کنید البته Udemy.

برچسب ها:

  • پایتون

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me