Python skripty pro odstranění souborů pravidelně

Ruční čištění systému souborů ručně není dobré. Automatizujte je!


Ruční mazání souborů a složek není vzrušující úkol, jak si člověk může myslet. Má smysl je automatizovat.

Přichází Python, aby nám usnadnil život. Python je vynikající programovací jazyk pro skriptování. Využíváme Python k dokončení našeho úkolu bez jakýchkoli překážek. Nejprve byste měli vědět, proč je Python dobrá volba.

  • Python je stále oblíbený jazyk pro automatizaci úkolů
  • Méně kódu ve srovnání s jinými programovacími jazyky
  • Python je kompatibilní se všemi operačními systémy. Stejný kód můžete spustit ve Windows, Linux a Mac.
  • Python má modul nazvaný os, který nám pomáhá komunikovat s operačním systémem. Tento modul budeme používat k dokončení naší automatizace mazání souborů.

Pomocí Pythonu můžeme nahradit jakékoli nepříjemné nebo opakující se systémové úkoly. Psaní skriptů pro dokončení určité systémové úlohy je košíček, pokud znáte Pythona. Podívejme se na následující případ použití.

Poznámka: Následující jsou testovány na Pythonu 3.6+

Odstraňování souborů / složek starších než X dní

Často nepotřebujete staré protokoly a pravidelně je musíte vyčistit, aby bylo úložiště k dispozici. Mohlo by to být cokoli, nejen protokoly.

V modulu os máme metodu zvanou stat, která poskytuje podrobnosti o posledním přístupu (st_atime), modifikace (st_mtime), a modifikace metadat (st_ctime) čas. Všechny metody vracejí čas v sekundách od doby. Více informací o epochě tady.

Pro procházení podsložkami složky použijeme metodu nazvanou os.walk (cesta).

Podle níže uvedených kroků zapište kód pro odstranění souborů / složek na základě počtu dní.

  • Importujte moduly čas, os, zavřít
  • Nastavte cestu a dny na proměnné
  • Převeďte počet dní na sekundy pomocí time.time () metoda
  • Zkontrolujte, zda cesta existuje, nebo ne os.path.exists (cesta) modul
  • Pokud cesta existuje, získejte seznam souborů a složek přítomných v cestě, včetně podsložek. Použijte metodu os.walk (cesta), a vrátí generátor obsahující složky, soubory a podsložky
  • Získejte cestu k souboru nebo složce spojením současné cesty a názvu souboru / složky pomocí metody os.path.join ()
  • Dostaň ctime z os.stat (cesta) metoda používající atribut st_ctime
  • Porovnejte ctime s časem, který jsme předtím vypočítali
  • Pokud je výsledek větší než požadované dny uživatele, zkontrolujte, zda se jedná o soubor nebo složku. Pokud se jedná o soubor, použijte os.remove (cesta) jinak použít shutil.rmtree () metoda
  • Pokud cesta neexistuje, vytiskněte zprávu nenalezena

Podívejme se na kód podrobně.

# import požadovaných modulů
import os
importovat
importovat čas

# hlavní funkce
def main ():

# inicializace počtu
deleted_folders_count = 0
smazaný_soubor_účtu = 0

# zadat cestu
cesta = "/ PATH_TO_DELETE"

# zadejte dny
dny = 30

# převod dní na sekundy
# time.time () vrací aktuální čas v sekundách
sekund = time.time () – (dny * 24 * 60 * 60)

# kontrola, zda je soubor přítomen v cestě nebo ne
if os.path.exists (cesta):

# iterace přes každou složku a soubor v cestě
pro root_folder, složky, soubory v os.walk (cesta):

# porovnání dnů
pokud vteřiny >= get_file_or_folder_age (root_folder):

# odebrání složky
remove_folder (root_folder)
deleted_folders_count + = 1 # přírůstkový počet

# lámání po odstranění kořenového adresáře
přestávka

jiný:

# check folder from root_folder
pro složku ve složkách:

# cesta ke složce
folder_path = os.path.join (root_folder, složka)

# ve srovnání s dny
pokud vteřiny >= get_file_or_folder_age (folder_path):

# vyvolání funkce remove_folder
remove_folder (folder_path)
deleted_folders_count + = 1 # přírůstkový počet

# zkontroluje aktuální soubory adresáře
pro soubor v souborech:

# cesta k souboru
file_path = os.path.join (root_folder, file)

# porovnání dnů
pokud vteřiny >= get_file_or_folder_age (file_path):

# vyvolání funkce remove_file
remove_file (file_path)
deleted_files_count + = 1 # inkrementing count

jiný:

# pokud cesta není adresář
# ve srovnání s dny
pokud vteřiny >= get_file_or_folder_age (cesta):

# vyvolání souboru
remove_file (cesta)
deleted_files_count + = 1 # inkrementing count

jiný:

# file / folder nebyl nalezen
tisk (f ‘"{cesta}" nenalezeno ‘)
deleted_files_count + = 1 # inkrementing count

tisk (f"Celkový počet smazaných složek: {deleted_folders_count}")
tisk (f"Celkem smazaných souborů: {deleted_files_count}")

def remove_folder (cesta):

# odebrání složky
pokud ne shutil.rmtree (cesta):

# zpráva o úspěchu
tisk (f"{cesta} byla úspěšně odebrána")

jiný:

# chybová zpráva
tisk (f"{Path} nelze smazat")

def remove_file (cesta):

# odebrání souboru
pokud ne os.remove (cesta):

# zpráva o úspěchu
tisk (f"{cesta} byla úspěšně odebrána")

jiný:

# chybová zpráva
tisk (f"{Path} nelze smazat")

def get_file_or_folder_age (cesta):

# získání ctime souboru / složky
# čas bude v sekundách
ctime = os.stat (cesta) .st_ctime

# vrácení času
návrat ctime

pokud __name__ == ‘__main__’:
hlavní()

Na základě požadavku musíte upravit výše uvedené dvě proměnné ve výše uvedeném kódu.

dny = 30
cesta = "/ PATH_TO_DELETE"

Odstraňování souborů větších než X GB

Vyhledejte soubory, které jsou větší než určitá velikost, a vymažte je. Je to podobné výše uvedenému skriptu. V předchozím skriptu jsme si vzali stáří jako parametr, a nyní budeme brát velikost jako parametr pro odstranění.

# import os modulu
import os

# function, která vrací velikost souboru
def get_file_size (cesta):

# získání velikosti souboru v bajtech
size = os.path.getsize (cesta)

# vrací velikost souboru
návratová velikost

# function pro smazání souboru
def remove_file (cesta):

# smazání souboru
pokud ne os.remove (cesta):

# úspěch
tisk (f"{cesta} byla úspěšně smazána")

jiný:

# error
tisk (f"{Path} nelze smazat")

def main ():
# zadat cestu
cesta = "ENTER_PATH_HERE"

# vložte maximální velikost souboru v MB
velikost = 500

# kontrola, zda cesta existuje nebo ne
if os.path.exists (cesta):

# převod velikosti na bajty
size = size * 1024 * 1024

# procházení podsložkami
pro root_folder, složky, soubory v os.walk (cesta):

# iterace v seznamu souborů
pro soubor v souborech:

# získání cesty k souboru
file_path = os.path.join (root_folder, file)

# kontrola velikosti souboru
pokud get_file_size (file_path) >= velikost:
# vyvolání funkce remove_file
remove_file (file_path)

jiný:

# kontrola pouze v případě, že cesta je soubor
if os.path.isfile (cesta):
# cesta není dir
# kontrola souboru přímo
pokud get_file_size (cesta) >= velikost:
# vyvolání funkce remove_file
remove_file (cesta)

jiný:

# cesta neexistuje
tisk (f"{cesta} neexistuje")

pokud __name__ == ‘__main__’:
hlavní()

Upravte následující dvě proměnné.

cesta = "ENTER_PATH_HERE"
velikost = 500

Odebírání souborů s konkrétní příponou

Může se jednat o scénář, ve kterém chcete odstranit soubory podle jejich typů přípon. Řekněme soubor .log. Můžeme najít příponu souboru pomocí metody os.path.splitext (path). Vrací n-tici obsahující cestu a příponu souboru.

# import os modulu
import os

# hlavní funkce
def main ():

# zadat cestu
cesta = "PATH_TO_LOOK_FOR"

# zadejte příponu
přípona = ".log"

# kontrola, zda cesta existuje nebo ne
if os.path.exists (cesta):

# zkontrolujte, zda je cesta adresářem nebo ne
if os.path.isdir (cesta):

# iterace přes podsložky
pro root_folder, složky, soubory v os.walk (cesta):

# kontrola souborů
pro soubor v souborech:

# cesta k souboru
file_path = os.path.join (root_folder, file)

# extrahování přípony z názvu souboru
file_extension = os.path.splitext (file_path) [1]

# check the file_extension
pokud extension == file_extension:

# smazání souboru
pokud ne os.remove (file_path):

# zpráva o úspěchu
tisk (f"{file_path} byl úspěšně smazán")

jiný:

# chybová zpráva
tisk (f"Nelze smazat {file_path}")

jiný:

# path není adresář
tisk (f"{path} není adresář")

jiný:

# cesta neexistuje
tisk (f"{cesta} neexistuje")

pokud __name__ == ‘__main__’:
# vyvolání hlavní funkce
hlavní()

Nezapomeňte aktualizovat cestu a proměnnou proměnné ve výše uvedeném kódu, aby vyhovoval vašim požadavkům.

Navrhoval bych testování skriptů v prostředí NON PRODUCTION. Až budete s výsledky spokojeni, můžete pomocí cronu (pokud používáte Linux) naplánovat pravidelné provádění údržby. Python je skvělý k dosažení těchto věcí, a pokud máte zájem naučit se dělat více, podívejte se na to Kurz Udemy.

TAGY:

  • Krajta

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