Ֆայլերի կանոնակարգը ջնջելու համար Python սցենարներ

Ֆայլային համակարգը պարբերաբար ձեռքով մաքրելը լավ չէ: Ավտոմատացրեք դրանք!


Ֆայլերը և թղթապանակները ձեռքով ջնջելը այնքան էլ հետաքրքիր գործ չէ, ինչպես կարծում է: Իմաստ ունի դրանք ավտոմատացնել.

Ահա գալիս է Փիթոնը ՝ մեր կյանքը հեշտացնելու համար: Python- ը գրելու համար ծրագրավորման հիանալի լեզու է: Մենք պատրաստվում ենք օգտվել Python- ից ՝ առանց որևէ խոչընդոտի ավարտելու մեր խնդիրը: Նախ, դուք պետք է իմանաք, թե ինչու Python- ը լավ ընտրություն է.

  • Python- ը բոլոր ժամանակների սիրված լեզուն է առաջադրանքների ավտոմատացման համար
  • Ծրագրավորման այլ լեզուների համեմատ ավելի քիչ կոդ
  • Python- ը համատեղելի է բոլոր գործող համակարգերի հետ: Դուք կարող եք գործարկել նույն ծածկագիրը Windows- ում, Linux- ում և Mac- ում.
  • Python- ն ունի մի մոդուլ, որը կոչվում է os, որն օգնում է մեզ համագործակցել գործառնական համակարգի հետ: Մենք պատրաստվում ենք օգտագործել այս մոդուլը ՝ ֆայլերը ջնջելու մեր ավտոմատացումը լրացնելու համար.

Մենք կարող ենք փոխարինել Python- ի օգտագործմամբ ցանկացած նյարդայնացնող կամ կրկնվող համակարգի առաջադրանքները: Հատուկ համակարգային առաջադրանքն ավարտելու համար սցենարներ գրելը cupcake է, եթե գիտեք Python- ը: Եկեք դիտենք հետևյալ օգտագործման դեպքը.

Նշում. Հետևյալը փորձարկվում է Python 3.6-ում+

X օրից ավելի ֆայլեր / պանակներ հեռացնելը

Հաճախ ձեզ հարկավոր չէ հին տեղեկամատյաններ, և պահեստը մատչելի դարձնելու համար հարկավոր է պարբերաբար մաքրել դրանք: Դա կարող էր լինել ամեն ինչ և ոչ միայն տեղեկամատյանները.

Օս մոդուլում մենք ունենք մի մեթոդ, որը կոչվում է stat, որը պարունակում է վերջին մուտքի մանրամասները (st_atime), փոփոխություն (st_mtime), և մետատվյալների փոփոխում (st_ctime) ժամանակ Բոլոր եղանակները ժամանակն են վերադառնում վայրկյանից վայրկյաններ անց: Ավելի մանրամասն կարող եք գտնել դարաշրջանի մասին այստեղ.

Մենք կօգտագործենք մի մեթոդ, որը կոչվում է os.walk (ուղի) ՝ թղթապանակի ենթաթղթերի միջով անցնելու համար.

Followնջման ֆայլերը / թղթապանակները կոդ գրելու համար հետևեք հետևյալ քայլերին ՝ հիմք ընդունելով օրերի քանակը.

  • Ներմուծեք մոդուլները ժամանակ, օս, շիլլ
  • Սահմանեք ուղին և օրերը փոփոխականներին
  • Օրվա քանակը վայրկյանների ընթացքում փոխակերպեք ՝ օգտագործելով ժամանակը.ժամ () մեթոդ
  • Ստուգեք `ճանապարհը կա՞, թե՞ ոչ os.path.exists (ուղի) մոդուլ
  • Եթե ​​ուղին գոյություն ունի, ապա ստացեք այդ ճանապարհին առկա ֆայլերի և պանակների ցանկը, ներառյալ ենթաֆայլերը: Օգտագործեք մեթոդը os.walk (ուղի), և այն կվերադարձնի գեներատոր, որը պարունակում է թղթապանակներ, ֆայլեր և ենթաֆայլեր
  • Ձեռք բերեք ֆայլի կամ թղթապանակի ուղին `միանալով ինչպես ընթացիկ ուղին, այնպես էլ ֆայլը / թղթապանակը անունը` օգտագործելով մեթոդը os.path.join ()
  • Ստացեք ժամանակ ից os.stat (ուղի) մեթոդը օգտագործելով ատրիբուտը st_ctime
  • Համեմատեք ժամանակ նախկինում հաշվարկված ժամանակի հետ
  • Եթե ​​արդյունքը ավելի մեծ է, քան օգտագործողի ցանկալի օրերը, ապա ստուգեք `դա ֆայլ կամ պանակ է: Եթե ​​դա ֆայլ է, օգտագործեք os.remove (ուղի) այլապես օգտագործել shutil.rmtree () մեթոդ
  • Եթե ​​ուղին գոյություն չունի, տպեք չգտնված հաղորդագրությունը

Եկեք մանրամասն տեսնենք ծածկագիրը.

# ներմուծվող պահանջվող մոդուլները
ներմուծման os
ներմուծման շիլա
ներմուծման ժամանակը

# հիմնական գործառույթ
def հիմնական ():

# նախնական հաշվարկ
ջնջված_ ֆայլեր_կոնտ = 0
ջնջված_ֆայլեր_հաշիվ = 0

# նշեք ուղին
ուղի = "/ PATH_TO_DELETE"

# նշեք օրերը
օր = 30

# օրերը վայրկյանների վերափոխելով
# time.time () – ն անցնում է ընթացիկ ժամանակը վայրկյաններով
վայրկյան = ժամանակ. ժամ () – (օր * 24 * 60 * 60)

# ստուգում ՝ ֆայլը առկա է ուղով, թե ոչ
եթե os.path.exists (ուղի):

# կրկնում է ճանապարհի յուրաքանչյուր թղթապանակ և ֆայլ
root_folder- ի, պանակների, ֆայլերի համար os.walk- ում (ուղի) համար.

# համեմատելով օրերը
եթե վայրկյան >= get_file_or_folder_age (root_folder):

# պանակը հեռացնելը
remove_folder (root_folder)
ջնջված_ ֆայլեր_հաշիվ + = 1 # աճող հաշվարկ

# կոտրել արմատ_ ֆայլը հեռացնելուց հետո
ընդմիջում

էլի:

# ստուգում թղթապանակը root_folder- ից
թղթապանակների թղթապանակների համար.

# թղթապանակի ուղի
folder_path = os.path.join (root_folder, թղթապանակ)

# համեմատելով օրերի հետ
եթե վայրկյան >= get_file_or_folder_age (թղթապանակ_պատ):

# կանչում է հեռացման_ ֆայլի գործառույթը
remove_folder (folder_path)
ջնջված_ ֆայլեր_հաշիվ + = 1 # աճող հաշվարկ

# ստուգում առկա գրացուցակի ֆայլերը
ֆայլերում ֆայլերի համար.

# ֆայլի ուղի
file_path = os.path.join (root_folder, ֆայլ)

# համեմատելով օրերը
եթե վայրկյան >= get_file_or_folder_age (file_path):

# կանչելով remove_file գործառույթը
remove_file (file_path)
ջնջված_ ֆայլեր_հաշիվ + = 1 # աճող հաշվարկ

էլի:

# եթե ուղին գրացուցակ չէ
# համեմատելով օրերի հետ
եթե վայրկյան >= get_file_or_folder_age (ուղի):

# կանչել ֆայլը
remove_file (ուղի)
ջնջված_ ֆայլեր_հաշիվ + = 1 # աճող հաշվարկ

էլի:

# ֆայլ / պանակ չի գտնվել
տպել (զ ‘"{ուղի}" չի գտնվել ‘)
ջնջված_ ֆայլեր_հաշիվ + = 1 # աճող հաշվարկ

տպել (զ"Totalնջված_ ամբողջ թղթապանակը ջնջված է.")
տպել (զ"Filesնջված ընդհանուր ֆայլերը. {Ջնջված_ ֆայլեր_կոնտաժ}")

def remove_folder (ուղի):

# պանակը հեռացնելը
եթե ոչ shutil.rmtree (ուղի):

# հաջողության հաղորդագրություն
տպել (զ"{ուղին successfully հաջողությամբ հեռացվում է")

էլի:

# ձախողման հաղորդագրություն
տպել (զ"Անհնար է ջնջել {ուղին")

def remove_file (ուղի):

# հեռացնել ֆայլը
եթե ոչ os.remove (ուղի):

# հաջողության հաղորդագրություն
տպել (զ"{ուղին successfully հաջողությամբ հեռացվում է")

էլի:

# ձախողման հաղորդագրություն
տպել (զ"Անհնար է ջնջել {ուղին")

def get_file_or_folder_age (ուղի):

# ֆայլի / թղթապանակի ctime ստանալը
# ժամանակը կլինի վայրկյանների ընթացքում
ctime = os.stat (ուղի) .st_ctime

# ժամանակ վերադարձնելով
վերադարձնել ժամը

եթե __name__ == ‘__main__’:
հիմնական ()

Անհրաժեշտության հիման վրա վերը նշված կոդով պետք է կարգավորեք հետևյալ երկու փոփոխականները.

օր = 30
ուղի = "/ PATH_TO_DELETE"

X GB- ից ավելի ֆայլեր հեռացնելը

Եկեք փնտրենք այն ֆայլերը, որոնք ավելի մեծ են, քան որոշակի չափը և ջնջենք դրանք: Այն նման է վերը նշված սցենարին: Նախորդ սցենարում մենք վերցրել ենք Տարիք որպես պարամետր, և հիմա մենք կվերցնենք չափը որպես ջնջման պարամետր.

# ներմուծում է os մոդուլը
ներմուծման os

# գործառույթ, որը վերադարձնում է ֆայլի չափը
def get_file_size (ուղի):

# ստացվում է ֆայլի չափը բայթերով
չափը = os.path.getsize (ուղի)

# վերադարձնելով ֆայլի չափը
վերադարձի չափը

# ֆունկցիա ՝ ֆայլը ջնջելու համար
def remove_file (ուղի):

# ֆայլը ջնջելը
եթե ոչ os.remove (ուղի):

# հաջողություն
տպել (զ"{ուղին successfully հաջողությամբ ջնջվում է")

էլի:

# սխալ
տպել (զ"Անհնար է ջնջել {ուղին")

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 (file_path) >= չափը:
# կանչելով remove_file գործառույթը
remove_file (file_path)

էլի:

# ստուգում է միայն այն դեպքում, եթե ուղին ֆայլ է
եթե os.path.isfile (ուղի):
# ուղին ուղի չէ
# ֆայլը ուղղակիորեն ստուգում է
եթե get_file_size (ուղի) >= չափը:
# կանչելով remove_file գործառույթը
remove_file (ուղի)

էլի:

# ուղի գոյություն չունի
տպել (զ"{ուղի} գոյություն չունի")

եթե __name__ == ‘__main__’:
հիմնական ()

Կարգավորեք հետևյալ երկու փոփոխականները.

ուղի = "ENTER_PATH_HERE"
չափը = 500

Հատուկ ընդլայնմամբ ֆայլեր հեռացնելը

Կարող է լինել մի սցենար, որտեղ ցանկանում եք ջնջել ֆայլերը ըստ դրանց ընդլայնման տեսակների: Եկեք ասենք .log ֆայլը: Կարող ենք գտնել ֆայլի երկարացում ՝ օգտագործելով os.path.splitext (ուղին) մեթոդով: Այն վերադարձնում է տուփը, որը պարունակում է ֆայլի ուղին և ընդլայնումը.

# ներմուծող os մոդուլ
ներմուծման os

# հիմնական գործառույթ
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]

# ստուգում է ֆայլը_ ընդլայնումը
եթե ընդլայնում == file_extension:

# ֆայլը ջնջելը
եթե ոչ os.remove (file_path):

# հաջողության հաղորդագրություն
տպել (զ"{file_path} հաջողությամբ ջնջվեց")

էլի:

# ձախողման հաղորդագրություն
տպել (զ"Անհնար է ջնջել {file_path")

էլի:

# ուղին գրացուցակ չէ
տպել (զ"{path }- ը տեղեկատու չէ")

էլի:

# ուղի գոյություն չունի
տպել (զ"{ուղի} գոյություն չունի")

եթե __name__ == ‘__main__’:
# կանչում է հիմնական գործառույթը
հիմնական ()

Մի մոռացեք վերը նշված կոդով թարմացնել ուղին և երկարացման փոփոխականը `ձեր պահանջները բավարարելու համար.

Ես կառաջարկեի փորձարկել գրությունները NON PRODUCTION միջավայրում: Արդյունքներից գոհ լինելուց հետո կարող եք ծրագրել cron- ի միջոցով (եթե Linux- ն է օգտագործում) պարբերաբար այն վարելու համար `պահպանման աշխատանքներ կատարելու համար: Python- ը հրաշալի է այս իրերը ձեռք բերելու համար, և եթե ցանկանում եք ավելին սովորել, ապա դա ստուգեք Ուդեմի դասընթաց.

ՏԵՂԵՐ.

  • Փիթոն

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map