Pythoni skriptid failide kustutamiseks

Failisüsteemi regulaarselt käsitsi puhastamine pole hea. Automatiseeri neid!


Failide ja kaustade käsitsi kustutamine pole põnev ülesanne, nagu võib arvata. Neid on mõistlik automatiseerida.

Siin tuleb Python meie elu lihtsamaks muutmiseks. Python on skriptimiseks suurepärane programmeerimiskeel. Kavatseme Pythoni ära kasutada, et oma ülesanne takistusteta lõpetada. Esiteks peaksite teadma, miks Python on hea valik.

  • Python on kõigi aegade lemmikkeel ülesannete automatiseerimiseks
  • Võrreldes teiste programmeerimiskeeltega on vähem koodi
  • Python ühildub kõigi opsüsteemidega. Sama koodi saate käitada Windowsis, Linuxis ja Macis.
  • Pythonil on moodul nimega os, mis aitab meil operatsioonisüsteemiga suhelda. Kavatseme seda moodulit kasutada failide kustutamise automatiseerimiseks.

Saame Python abil asendada kõik tüütud või korduvad süsteemitoimingud. Skriptide kirjutamine konkreetse süsteemiülesande täitmiseks on koogike, kui teate Pythoni. Vaatame järgmist kasutusjuhtu.

Märkus. Python 3.6-l on testitud järgmist+

X päevast vanemate failide / kaustade eemaldamine

Sageli ei vaja te vanu logisid ja salvestusruumi kättesaadavaks tegemiseks peate neid regulaarselt puhastama. See võib olla ükskõik mida ja mitte ainult logisid.

Meil on os-moodulis meetod nimega stat, mis annab üksikasjad viimase juurdepääsu kohta (st_atime), modifikatsioon (st_mtime), ja metaandmete muutmine (st_ctime) aeg. Kõik meetodid tagastavad aja sekundites alates ajastust. Lisateavet saate ajastu kohta siin.

Kausta alamkaustade sirvimiseks kasutame meetodit os.walk (tee).

Päevade arvu põhjal kustutamisfailide / -kaustade koodi kirjutamiseks järgige järgmisi samme.

  • Importige moodulid aeg, os, kinni
  • Seadke muutujatele tee ja päevad
  • Teisendage päevade arv sekundites, kasutades aeg.time () meetod
  • Kontrollige, kas tee on olemas või mitte os.path.exists (tee) moodul
  • Kui tee on olemas, hankige sellel teel olevate failide ja kaustade loend koos alamkaustadega. Kasutage meetodit os.walk (tee), ja see tagastab generaatorid, mis sisaldavad kaustu, faile ja alamkaustu
  • Hankige faili või kausta tee, ühendades meetodi abil nii praeguse tee kui ka faili / kausta nime os.path.join ()
  • Hankige ctime alates os.stat (tee) meetodit kasutades atribuuti st_ctime
  • Võrdle ctime ajaga, mille oleme varem välja arvutanud
  • Kui tulemus on suurem kui kasutaja soovitud päevad, siis kontrollige, kas see on fail või kaust. Kui see on fail, kasutage os.remove (tee) muidu kasutage shutil.rmtree () meetod
  • Kui teed pole olemas, printige teade mitte leitud

Vaatame koodi üksikasjalikult.

# vajalike moodulite importimine
impordi os
impordi shutil
impordi aeg

# põhifunktsioon
def main ():

# loenduse lähtestamine
kustutatud_kaustad_arv = 0
kustutatud_failide arv = 0

# täpsusta tee
tee = "/ PATH_TO_DELETE"

# täpsustage päevad
päeva = 30

# päevade teisendamine sekunditeks
# time.time () tagastab praeguse aja sekundites
sekundit = aeg.time () – (päevades * 24 * 60 * 60)

# kontrollida, kas fail asub tees või mitte
kui os.path.exists (tee):

# iteratsioon üle kõigi teede kaustade ja failide
juurkataloogi, kaustade, failide os.walk (tee) jaoks:

# päevade võrdlemine
kui sekundit >= get_file_or_folder_age (root_kataloog):

# kausta eemaldamine
eemalda kaust (juurkataloog)
delete_folders_count + = 1 # kasvav arv

# murdmine pärast juurkausta eemaldamist
murda

muu:

# kausta kontrollimine juurkataloogist
kaustade jaoks:

# kausta tee
kausta_tee = os.path.join (juurkataloog, kaust)

# võrreldes päevadega
kui sekundit >= hangi_fail_või kausta_aadress (kaustatee):

# funktsiooni remove_folder kutsumine
eemalda kaust (kaustatee)
delete_folders_count + = 1 # kasvav arv

# praeguste kataloogifailide kontrollimine
failides sisalduvate failide jaoks:

# faili teekond
failirada = os.path.join (juurkataloog, fail)

# päevade võrdlemine
kui sekundit >= hangi_fail_või kausta_aadress (failirada):

# funktsiooni remove_file kutsumine
eemalda fail (failitee)
delete_files_count + = 1 # kasvav arv

muu:

# kui tee pole kataloog
# võrreldes päevadega
kui sekundit >= get_file_or_folder_age (tee):

# faili kutsumine
eemalda fail (tee)
delete_files_count + = 1 # kasvav arv

muu:

# faili / kausta ei leitud
print (f ‘"{tee}" ei leitud ‘)
delete_files_count + = 1 # kasvav arv

print (f"Kustutatud kaustu kokku: {Dele_folders_count}")
print (f"Kustutatud faile kokku: {Dele_files_count}")

def eemalda kaust (tee):

# kausta eemaldamine
kui mitte shutil.rmtree (tee):

# eduteade
print (f"{path} eemaldatakse edukalt")

muu:

# tõrketeade
print (f"{Path} ei saa kustutada")

def eemalda_fail (tee):

# faili eemaldamine
kui mitte, siis os.remove (tee):

# eduteade
print (f"{path} eemaldatakse edukalt")

muu:

# tõrketeade
print (f"{Path} ei saa kustutada")

def get_file_or_folder_age (tee):

# faili / kausta ctime saamine
# aeg on sekundites
ctime = os.stat (tee) .st_ctime

# aja tagastamine
tagasi ctime

kui __name__ == ‘__main__’:
peamine ()

Nõude põhjal peate ülaltoodud koodis kohandama kahte järgmist muutujat.

päeva = 30
tee = "/ PATH_TO_DELETE"

Suuremate kui X GB failide eemaldamine

Otsime üles failid, mis on suurem kui kindel suurus ja kustutame need. See sarnaneb ülaltoodud skriptiga. Eelmises stsenaariumis oleme võtnud vanus parameetrina ja nüüd võtame suurus kustutamise parameetrina.

# os-mooduli importimine
impordi os

# funktsioon, mis tagastab faili suuruse
def get_file_size (tee):

# faili suuruse saamine baitides
suurus = os.path.getsize (tee)

# faili suuruse tagastamine
tagastamise suurus

# funktsioon faili kustutamiseks
def eemalda_fail (tee):

# faili kustutamine
kui mitte, siis os.remove (tee):

# edu
print (f"{tee} kustutatakse edukalt")

muu:

# viga
print (f"{Path} ei saa kustutada")

def main ():
# täpsusta tee
tee = "ENTER_PATH_HERE"

# pane faili maksimaalne suurus MB-des
suurus = 500

# kontrollida, kas tee on olemas või mitte
kui os.path.exists (tee):

# suuruse teisendamine baitideks
suurus = suurus * 1024 * 1024

# alamkaustade kaudu liikumine
juurkataloogi, kaustade, failide os.walk (tee) jaoks:

# iteratsioon failideloendis
failides sisalduvate failide jaoks:

# faili tee hankimine
failirada = os.path.join (juurkataloog, fail)

# faili suuruse kontrollimine
kui saada_faili suurus (faili rada) >= suurus:
# funktsiooni remove_file kutsumine
eemalda fail (failitee)

muu:

# kontrollib ainult siis, kui tee on fail
kui os.path.isfile (tee):
# tee pole dir
# faili otsest kontrollimist
kui saada_faili_suurus (tee) >= suurus:
# funktsiooni remove_file kutsumine
eemalda fail (tee)

muu:

# teed pole olemas
print (f"{path} pole olemas")

kui __name__ == ‘__main__’:
peamine ()

Reguleerige kahte järgmist muutujat.

tee = "ENTER_PATH_HERE"
suurus = 500

Konkreetse laiendiga failide eemaldamine

Võib juhtuda, et soovite kustutada faile nende laienditüüpide järgi. Ütleme nii .log fail. Faili laiendi leiame os.path.splitext (tee) meetodil. See tagastab pakendi, mis sisaldab tee ja faili laiendit.

# os-mooduli importimine
impordi os

# põhifunktsioon
def main ():

# täpsusta tee
tee = "PATH_TO_LOOK_FOR"

# täpsustage laiend
laiend = ".logi"

# kontrollida, kas tee on olemas või mitte
kui os.path.exists (tee):

# kontrollige, kas tee on kataloog või mitte
kui os.path.isdir (tee):

# iteratsioon alamkaustade kaudu
juurkataloogi, kaustade, failide os.walk (tee) jaoks:

# failide kontrollimine
failides sisalduvate failide jaoks:

# faili teekond
failirada = os.path.join (juurkataloog, fail)

# laiendi failinimest väljavõtmine
faili_laiend = os.path.splitext (faili_rada) [1]

# faililaiendi kontrollimine
kui laiendus == faililaiend:

# faili kustutamine
kui mitte, siis os.remove (failirada):

# eduteade
print (f"{file_path} kustutatud edukalt")

muu:

# tõrketeade
print (f"{File_path} ei saa kustutada")

muu:

# tee pole kataloog
print (f"{tee} ei ole kataloog")

muu:

# rada pole olemas
print (f"{path} pole olemas")

kui __name__ == ‘__main__’:
# põhifunktsiooni kutsumine
peamine ()

Ärge unustage värskendada ülaltoodud koodis asuvat tee- ja laiendimuuturit, et see vastaks teie nõuetele.

Ma soovitaksin skripte testida MITTE TOOTMISES keskkonnas. Kui olete tulemustega rahul, saate croni (kui kasutate Linuxi) ajakava, et seda hooldustööde jaoks perioodiliselt käivitada. Python on selle asja saavutamiseks suurepärane ja kui teil on huvi õppida midagi enamat, siis vaadake seda Udemy kursus.

Sildid:

  • 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