Python-skrifte om die lêersreëlmatigheid te verwyder

Die skoonmaak van lêerstelsel gereeld met die hand is nie goed nie. Outomatiseer dit!


Soos u dink, is dit nie ‘n opwindende taak om lêers en gidse met die hand te verwyder nie. Dit is sinvol om dit te outomatiseer.

Hier kom Python om ons lewens makliker te maak. Python is ‘n uitstekende programmeringstaal vir skrif. Ons gaan Python benut om ons taak sonder enige hindernis te voltooi. Eerstens moet u weet waarom Python ‘n goeie keuse is.

  • Python is ‘n gunsteling taal vir die outomatisering van take
  • Minder kode in vergelyking met ander programmeertale
  • Python is versoenbaar met al die bedryfstelsels. U kan dieselfde kode in Windows, Linux en Mac gebruik.
  • Python het ‘n module genaamd os wat ons help om met die bedryfstelsel te kommunikeer. Ons gaan hierdie module gebruik om ons outomatisering van die verwydering van lêers te voltooi.

Ons kan enige irriterende of herhalende stelseltake vervang deur Python te gebruik. Skryf van skrifte vir die voltooiing van ‘n spesifieke stelseltaak is ‘n kolwyntjie as u Python ken. Kom ons kyk na die volgende gebruiksgeval.

Opmerking: die volgende word op Python 3.6 getoets+

Verwyder lêers / gidse ouer as X dae

Dikwels het u nie ou logboeke nodig nie, en u moet dit gereeld skoonmaak om stoorplek beskikbaar te stel. Dit kan alles wees en nie net houtblokke nie.

Ons het ‘n metode genaamd stat in die OS-module wat besonderhede gee oor die laaste toegang (St_atime), verandering (St_mtime), en metadata-wysiging (St_ctime) tyd. Al die metodes is terug in sekondes sedert die tydvak. U kan meer inligting oor die tydperk vind hier.

Ons gebruik ‘n metode genaamd os.walk (pad) om deur die ondervouers van ‘n lêergids te gaan.

Volg die onderstaande stappe om kode te skryf vir die verwydering van lêers / gidse, gebaseer op die aantal dae.

  • Voer die modules in tyd, os, shutil
  • Stel die pad en dae in op die veranderlikes
  • Omskep die aantal dae in sekondes met behulp van time.time () metode
  • Kyk of die pad bestaan ​​of nie met behulp van die os.path.exists (pad) module
  • As die pad bestaan, kry die lys met lêers en gidse wat in die pad teenwoordig is, insluitend ondervouers. Gebruik die metode os.walk (pad), en dit sal ‘n kragopwekker met gidse, lêers en subgidse terugstuur
  • Kry die pad van die lêer of lêergids deur aan te sluit by die huidige pad en naam van die lêer / lêergids met behulp van die metode os.path.join ()
  • Kry die ctime van die os.stat (pad) metode met behulp van die attribuut st_ctime
  • Vergelyk die ctime met die tyd wat ons voorheen bereken het
  • As die resultaat groter is as die gewenste dae van die gebruiker, kyk dan of dit ‘n lêer of lêergids is. As dit ‘n lêer is, gebruik dan die os.remove (pad) gebruik die shutil.rmtree () metode
  • As die pad nie bestaan ​​nie, druk die boodskap wat nie gevind is nie

Laat ons die kode in detail sien.

# die invoer van die vereiste modules
invoer os
invoer sluit
invoer tyd

# hooffunksie
def hoof ():

# initialisering van die telling
delete_folders_count = 0
delete_files_count = 0

# spesifiseer die pad
pad = "/ PATH_TO_DELETE"

# spesifiseer die dae
dae = 30

# omskakeling van dae na sekondes
# time.time () gee die huidige tyd in sekondes terug
sekondes = time.time () – (dae * 24 * 60 * 60)

# kyk of die lêer in die pad aanwesig is of nie
as os.path.exists (pad):

# iterating oor elke lêer en lêer in die pad
vir root_folder, gidse, lêers in os.walk (pad):

# die dae vergelyk
as sekondes >= get_file_or_folder_age (root_folder):

# die vouer verwyder
remove_folder (root_folder)
delete_folders_count + = 1 # inkrementerende telling

# breek nadat die root_folder verwyder is
breek

anders:

# kontrole gids van die root_folder
vir vouer in gidse:

# map pad
map_path = os.path.join (root_folder, map)

# vergelyk met die dae
as sekondes >= get_file_or_folder_age (map_path):

# maak gebruik van die remove_folder-funksie
remove_folder (FOLDER_PATH)
delete_folders_count + = 1 # inkrementerende telling

# kontroleer die huidige gidslêers
vir lêer in lêers:

# Lêer pad
file_path = os.path.join (root_folder, file)

# die dae vergelyk
as sekondes >= get_file_or_folder_age (file_path):

# maak gebruik van die remove_file-funksie
remove_file (FILE_PATH)
delete_files_count + = 1 # inkrementerende telling

anders:

# as die pad nie ‘n gids is nie
# vergelyk met die dae
as sekondes >= get_file_or_folder_age (pad):

# gebruik die lêer
remove_file (pad)
delete_files_count + = 1 # inkrementerende telling

anders:

# lêer / lêergids word nie gevind nie
druk (f ‘"{Pad}" word nie gevind nie ‘)
delete_files_count + = 1 # inkrementerende telling

druk (f"Totale vouers uitgevee: {delete_folders_count}")
druk (f"Totale lêers uitgevee: {delete_files_count}")

def remove_folder (pad):

# die vouer verwyder
indien nie shutil.rmtree (pad):

# suksesboodskap
druk (f"{path} is suksesvol verwyder")

anders:

# foutboodskap
druk (f"Kan nie die {path} uitvee nie")

def remove_file (pad):

# die lêer verwyder
indien nie os.remove (pad):

# suksesboodskap
druk (f"{path} is suksesvol verwyder")

anders:

# foutboodskap
druk (f"Kan nie die {path} uitvee nie")

def get_file_or_folder_age (pad):

# kry die tyd van die lêer / lêergids
# tyd sal binne sekondes wees
ctime = os.stat (pad) .st_ctime

# die tyd terugbesorg
terugkeer tyd

as __name__ == ‘__main__’:
main ()

U moet die volgende twee veranderlikes in die bostaande kode aanpas op grond van die vereiste.

dae = 30
pad = "/ PATH_TO_DELETE"

Verwyder lêers groter as X GB

Kom ons soek na die lêers wat groter is as ‘n spesifieke grootte en verwyder dit. Dit is soortgelyk aan die skrif hierbo. In die vorige skrif het ons dit geneem ouderdom as parameter, en nou sal ons neem grootte as parameter vir die verwydering.

# die invoer van die OS-module
invoer os

# funksie wat die grootte van ‘n lêer terugstuur
def get_file_size (pad):

# kry lêergrootte in grepe
grootte = os.path.getsize (pad)

# die grootte van die lêer terugbesorg
terugkeer grootte

# funksie om ‘n lêer uit te vee
def remove_file (pad):

# die lêer uitvee
indien nie os.remove (pad):

# sukses
druk (f"{path} word suksesvol uitgevee")

anders:

# fout
druk (f"Kan nie die {path} uitvee nie")

def hoof ():
# spesifiseer die pad
pad = "ENTER_PATH_HERE"

# plaas maksimum grootte van die lêer in MB’s
grootte = 500

# kyk of die pad bestaan ​​of nie
as os.path.exists (pad):

# omskakeling van grootte na grepe
grootte = grootte * 1024 * 1024

# deur die submappe gaan
vir root_folder, gidse, lêers in os.walk (pad):

# iterating oor die lêerslys
vir lêer in lêers:

# kry lêerpad
file_path = os.path.join (root_folder, file)

# kontroleer die lêergrootte
as get_file_size (file_path) >= grootte:
# maak gebruik van die remove_file-funksie
remove_file (FILE_PATH)

anders:

# kyk slegs of die pad lêer is
as os.path.isfile (pad):
# pad is nie ‘n dir nie
# kontroleer die lêer direk
as get_file_size (pad) >= grootte:
# maak gebruik van die remove_file-funksie
remove_file (pad)

anders:

# pad bestaan ​​nie
druk (f"{path} bestaan ​​nie")

as __name__ == ‘__main__’:
main ()

Pas die volgende twee veranderlikes aan.

pad = "ENTER_PATH_HERE"
grootte = 500

Lêers met ‘n spesifieke uitbreiding verwyder

Daar kan ‘n scenario wees waar u lêers volgens die uitbreidingstipes wil verwyder. Laat ons sê .log-lêer. Ons kan die uitbreiding van ‘n lêer vind met behulp van die os.path.splitext (pad) -metode. Dit gee ‘n tule wat die pad en die uitbreiding van die lêer bevat.

# invoer van os module
invoer os

# hooffunksie
def hoof ():

# spesifiseer die pad
pad = "PATH_TO_LOOK_FOR"

# spesifiseer die uitbreiding
uitbreiding = ".Meld"

# kyk of die pad bestaan ​​of nie
as os.path.exists (pad):

# kyk of die pad gids is of nie
as os.path.isdir (pad):

# iterating deur die submappen
vir root_folder, gidse, lêers in os.walk (pad):

# nagaan van die lêers
vir lêer in lêers:

# Lêer pad
file_path = os.path.join (root_folder, file)

# trek die uitbreiding uit die lêernaam
file_extension = os.path.splitext (file_path) [1]

# kontroleer die lêer_extensie
as uitbreiding == file_extension:

# die lêer uitvee
indien nie os.remove (file_path):

# suksesboodskap
druk (f"{file_path} is suksesvol uitgevee")

anders:

# foutboodskap
druk (f"Kan nie die {file_path} uitvee nie")

anders:

# pad is nie ‘n gids nie
druk (f"{path} is nie ‘n gids nie")

anders:

# pad bestaan ​​nie
druk (f"{path} bestaan ​​nie")

as __name__ == ‘__main__’:
# beroep op hooffunksie
main ()

Moenie vergeet om die pad- en uitbreidingsveranderlike in die bostaande kode op te dateer om aan u vereistes te voldoen nie.

Ek stel voor dat u die skrifte in die NIE-PRODUKSIE-omgewing toets. Sodra u tevrede is met die resultate, kan u deur cron (as u Linux gebruik) skeduleer om dit periodiek te laat loop vir instandhoudingswerk. Python is wonderlik om hierdie dinge te bereik, en as u belangstel om meer te doen, gaan kyk gerus Udemy-kursus.

Tags:

  • 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