Python forskriftir til að eyða reglugerð um skrár

Að þrífa skráarkerfi reglulega handvirkt er ekki gott. Sjálfvirkan þá!


Að eyða skrám og möppum handvirkt er ekki spennandi verkefni, eins og manni dettur í hug. Það er skynsamlegt að gera þau sjálfvirk.

Hér kemur Python til að gera líf okkar auðveldara. Python er frábært forritunarmál fyrir skriftun. Við ætlum að nýta okkur Python til að klára verkefni okkar án nokkurrar hindrunar. Í fyrsta lagi ættir þú að vita af hverju Python er góður kostur.

  • Python er uppáhalds tungumál allra tíma til að gera sjálfvirkan verkefni
  • Minni kóði miðað við önnur forritunarmál
  • Python er samhæft við öll stýrikerfi. Þú getur keyrt sama kóða í Windows, Linux og Mac.
  • Python er með mát sem heitir OS sem hjálpar okkur að hafa samskipti við stýrikerfið. Við ætlum að nota þessa einingu til að ljúka sjálfvirkni okkar við að eyða skrám.

Við getum komið í staðinn fyrir pirrandi eða endurteknar kerfisverkefni með Python. Að skrifa forskriftir til að klára ákveðið kerfisverkefni er cupcake ef þú þekkir Python. Við skulum skoða eftirfarandi notkunarmál.

Athugið: eftirfarandi eru prófaðar á Python 3.6+

Fjarlægir skrár / möppur eldri en X daga

Oft þarftu ekki gamlar annálar og þú þarft reglulega að þrífa þær til að geymsla sé tiltæk. Það gæti verið hvað sem er og ekki bara annálar.

Við erum með aðferð sem kallast stat í OS-einingunni sem gefur upplýsingar um síðastan aðgang (St_atime), breytingu (st_mtime), og lýsigagnabreytingu (St_ctime) tíma. Allar aðferðir skila tíma á nokkrum sekúndum frá tímabilinu. Þú getur fundið frekari upplýsingar um tímabilið hér.

Við munum nota aðferð sem kallast os.walk (slóð) til að fara í gegnum undirmöppur möppu.

Fylgdu skrefunum hér fyrir neðan til að skrifa kóða fyrir eyðingarskrár / möppur miðað við fjölda daga.

  • Flytjið einingarnar inn tími, os, shutil
  • Stilltu leið og daga á breyturnar
  • Breyttu fjölda daga í sekúndur með tími.time () aðferð
  • Athugaðu hvort leiðin sé til eða ekki með því að nota os.path.exists (slóð) mát
  • Ef slóðin er til, fáðu þá skrána yfir skrár og möppur sem eru til staðar á slóðinni, þar á meðal undirmöppur. Notaðu aðferðina os.walk (slóð), og það mun skila rafall sem inniheldur möppur, skrár og undirmöppur
  • Fáðu slóð skráarinnar eða möppunnar með því að tengja bæði núverandi slóð og heiti skrár / möppu með aðferðinni os.path.join ()
  • Fáðu þér tíma frá os.stat (slóð) aðferð með því að nota eigindina stundir
  • Berðu saman tíma með þeim tíma sem við höfum reiknað út áður
  • Ef niðurstaðan er meiri en óskaðir dagar notandans, athugaðu hvort það er skrá eða mappa. Ef það er skrá skaltu nota os.remove (slóð) notaðu annars shutil.rmtree () aðferð
  • Ef slóðin er ekki til, prentaðu ekki skilaboð sem fundust

Við skulum sjá kóðann í smáatriðum.

# flytja inn nauðsynlegar einingar
innflutningur os
innflutningur shutil
innflutningstími

# aðalaðgerð
def aðal ():

# frumstilla talninguna
Delete_folders_count = 0
delete_files_count = 0

# tilgreindu slóðina
leið = "/ PATH_TO_DELETE"

# tilgreindu dagana
dagar = 30

# umbreyta dögum í sekúndur
# time.time () skilar núverandi tíma í sekúndum
sekúndur = tími.tími () – (dagar * 24 * 60 * 60)

# að athuga hvort skráin sé til staðar í slóð eða ekki
ef os.path.exists (slóð):

# endurtekning yfir hverja möppu og skrá á slóðinni
fyrir root_folder, möppur, skrár í os.walk (slóð):

# að bera saman dagana
ef sekúndur >= get_file_or_folder_age (root_folder):

# að fjarlægja möppuna
remove_folder (root_folder)
Delete_folders_count + = 1 # stigafjöldi

# brot eftir að root_folder hefur verið fjarlægð
brot

Annar:

# haka við möppu úr rótaröðinni
fyrir möppu í möppum:

# möppuslóð
folder_path = os.path.join (root_folder, folder)

# bera saman við dagana
ef sekúndur >= get_file_or_folder_age (folder_path):

# kallar á að fjarlægja_möppuna
remove_folder (folder_path)
Delete_folders_count + = 1 # stigafjöldi

# að haka við núverandi skráaskrár
fyrir skjal í skjölum:

# skráarslóð
file_path = os.path.join (root_folder, skjal)

# að bera saman dagana
ef sekúndur >= get_file_or_folder_age (file_path):

# að kalla fram remove_file aðgerðina
remove_file (file_path)
Delete_files_count + = 1 # stigafjöldi

Annar:

# ef slóðin er ekki skrá
# bera saman við dagana
ef sekúndur >= get_file_or_folder_age (slóð):

# kalla fram skrána
remove_file (slóð)
Delete_files_count + = 1 # stigafjöldi

Annar:

# skjal / mappa finnst ekki
prenta (f ‘"{leið}" finnst ekki ‘)
Delete_files_count + = 1 # stigafjöldi

prenta (f"Heildarmöppum eytt: {Delete_folders_count}")
prenta (f"Heildarskrám eytt: {Delete_files_count}")

def remove_folder (slóð):

# að fjarlægja möppuna
ef ekki shutil.rmtree (slóð):

# velgengisskilaboð
prenta (f"{path} er fjarlægt")

Annar:

# bilunarskilaboð
prenta (f"Ekki tókst að eyða {slóðinni}")

def remove_file (slóð):

# að fjarlægja skrána
ef ekki os.remove (slóð):

# velgengisskilaboð
prenta (f"{path} er fjarlægt")

Annar:

# bilunarskilaboð
prenta (f"Ekki tókst að eyða {slóðinni}")

def get_file_or_folder_age (slóð):

# að fá tíma fyrir skrána / möppuna
# tíminn verður í sekúndum
ctime = os.stat (slóð) .st_ctime

# skila tíma
skila ctime

ef __name__ == ‘__main__’:
aðal()

Þú verður að laga eftirfarandi tvær breytur í ofangreindum kóða samkvæmt kröfunni.

dagar = 30
leið = "/ PATH_TO_DELETE"

Fjarlægir skrár sem eru stærri en X GB

Við skulum leita að skránum sem eru stærri en ákveðin stærð og eyða þeim. Það er svipað og hér að ofan. Í fyrri handritinu höfum við tekið Aldur sem breytu, og nú munum við taka stærð sem breytu fyrir eyðingu.

# flytja inn OS-eininguna
innflutningur os

# fall sem skilar stærð skráar
def get_file_size (slóð):

# að fá skráarstærð í bæti
stærð = os.path.getsize (slóð)

# skila stærð skráarinnar
skila stærð

# aðgerð til að eyða skrá
def remove_file (slóð):

# að eyða skránni
ef ekki os.remove (slóð):

# árangur
prenta (f"{slóð} er eytt")

Annar:

# villa
prenta (f"Ekki tókst að eyða {slóðinni}")

def aðal ():
# tilgreindu slóðina
leið = "ENTER_PATH_HERE"

# setja hámarksstærð skráar í MBs
stærð = 500

# að athuga hvort leiðin sé til eða ekki
ef os.path.exists (slóð):

# umbreyta stærð í bæti
stærð = stærð * 1024 * 1024

# fara um undirmöppurnar
fyrir root_folder, möppur, skrár í os.walk (slóð):

# endurtekning yfir skráalistann
fyrir skjal í skjölum:

# að fá skrá slóð
file_path = os.path.join (root_folder, skjal)

# að athuga stærð skráarinnar
ef get_file_size (file_path) >= stærð:
# að kalla fram remove_file aðgerðina
remove_file (file_path)

Annar:

# athugaðu aðeins hvort slóðin er skrá
ef os.path.isfile (slóð):
# leið er ekki stef
# að skoða skrána beint
ef get_file_size (slóð) >= stærð:
# að kalla fram remove_file aðgerðina
remove_file (slóð)

Annar:

# slóð er ekki til
prenta (f"{slóð} er ekki til")

ef __name__ == ‘__main__’:
aðal()

Stilltu eftirfarandi tvær breytur.

leið = "ENTER_PATH_HERE"
stærð = 500

Fjarlægir skrár með sérstakri viðbót

Það gæti verið atburðarás þar sem þú vilt eyða skrám eftir viðbótargerðum þeirra. Segjum .log skrá. Við getum fundið framlengingu á skrá með aðferðinni os.path.splitext (slóð). Það skilar tuple sem inniheldur slóðina og viðbótina á skránni.

# að flytja inn os mát
innflutningur os

# aðalaðgerð
def aðal ():

# tilgreindu slóðina
leið = "PATH_TO_LOOK_FOR"

# tilgreina viðbótina
framlenging = ".log"

# að athuga hvort leiðin sé til eða ekki
ef os.path.exists (slóð):

# athugaðu hvort slóðin er skrá eða ekki
ef os.path.isdir (slóð):

# endurtekning í gegnum undirmöppurnar
fyrir root_folder, möppur, skrár í os.walk (slóð):

# athugun á skrám
fyrir skjal í skjölum:

# skráarslóð
file_path = os.path.join (root_folder, skjal)

# að draga framlenginguna úr skráarnafninu
file_extension = os.path.splitext (file_path) [1]

# að haka við file_extension
ef viðbygging == file_extension:

# að eyða skránni
ef ekki os.remove (file_path):

# velgengisskilaboð
prenta (f"{file_path} var eytt")

Annar:

# bilunarskilaboð
prenta (f"Ekki tókst að eyða {file_path}")

Annar:

# slóð er ekki skrá
prenta (f"{path} er ekki skrá")

Annar:

# slóð er ekki til
prenta (f"{slóð} er ekki til")

ef __name__ == ‘__main__’:
# kalla fram aðalaðgerð
aðal()

Ekki gleyma að uppfæra slóð og viðbótarbreytu í ofangreindum kóða til að uppfylla kröfur þínar.

Ég myndi leggja til að prófa forskriftirnar í umhverfinu sem ekki er framleitt. Þegar þú ert ánægður með árangurinn geturðu skipulagt í gegnum cron (ef þú notar Linux) til að keyra það reglulega til viðhaldsframkvæmda. Python er frábært að ná þessu efni og ef þú hefur áhuga á að læra að gera meira skaltu kíkja á þetta Udemy námskeið.

BÖRUR:

  • 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