Python parancsfájlok a fájlok törléséhez

A fájlrendszer rendszeres manuális tisztítása nem jó. Automatizálja őket!


A fájlok és mappák kézi törlése nem izgalmas feladat, amint gondolhatjuk. Van értelme automatizálni őket.

Itt jön a Python, hogy megkönnyítse az életünket. A Python kiváló programozási nyelv a szkriptek készítéséhez. Ki fogjuk használni a Python előnyeit, hogy akadályok nélkül befejezzük feladatunkat. Először is tudnia kell, hogy miért jó a Python.

  • A Python minden idők kedvenc nyelve a feladatok automatizálásához
  • Kevesebb kód a többi programozási nyelvhez képest
  • A Python kompatibilis az összes operációs rendszerrel. Ugyanazt a kódot futtathatja Windows, Linux és Mac rendszerekben.
  • A Pythonnak van egy os nevû modulja, amely segít az operációs rendszerrel való interakcióban. Ezt a modult fogjuk használni a fájlok törlésének automatizálásához.

A bosszantó vagy ismétlődő rendszerfeladatokat a Python használatával cserélhetjük ki. Szkriptek írása egy adott rendszerfeladat elvégzéséhez egy cupcake, ha ismeri a Python-ot. Nézzük meg a következő felhasználási esetet.

Megjegyzés: A következőket teszteljük a Python 3.6-on+

X naposnál régebbi fájlok / mappák eltávolítása

Gyakran nincs szüksége régi naplókra, és rendszeresen meg kell tisztítania őket, hogy rendelkezésre álljon a tárolás. Bármi lehet, és nem csak naplók.

Van egy stat nevû módszer az os modulban, amely részletezi az utolsó hozzáférést (St_atime), módosítás (St_mtime), és a metaadatok módosítása (St_ctime) idő. Az összes módszer visszatér az idő másodpercben a korszak óta. További részleteket találhat a korszakról itt.

Az mappák almappáin való áthaladáshoz az os.walk (elérési út) nevű módszert fogjuk használni.

Kövesse az alábbi lépéseket a törlési fájlok / mappák kódjának a napszám alapján történő írásához.

  • Importálja a modulokat idő, os, zár
  • Állítsa be a változók elérési útját és napjait
  • Konvertálja a napok számát másodpercben a time.time () eljárás
  • Ellenőrizze, hogy az elérési út létezik-e vagy sem os.path.exists (path) modul
  • Ha az elérési út létezik, akkor szerezze be az elérési útban található fájlok és mappák listáját, beleértve az almappákat. Használja a módszert os.walk (path), és visszaad egy mappákat, fájlokat és almappákat tartalmazó generátort
  • A fájl vagy mappa elérési útját úgy kaphatja meg, hogy a módszer használatával összekapcsolja az aktuális elérési utat és a fájl / mappa nevét os.path.join ()
  • Szerezd meg a ctime tól os.stat (path) módszer az attribútum használatával st_ctime
  • Hasonlítsa össze a ctime az előzőleg kiszámított idővel
  • Ha az eredmény meghaladja a felhasználó kívánt napjait, akkor ellenőrizze, hogy fájl vagy mappa van-e. Ha ez egy fájl, akkor használja a os.remove (path) egyébként használja a shutil.rmtree () eljárás
  • Ha az elérési út nem létezik, nyomtassa ki a nem található üzenetet

Lássuk a kódot részletesebben.

# a szükséges modulok importálása
import os
import shil
importálási idő

# fő funkció
def main ():

# a számlálás inicializálása
delete_folders_count = 0
delete_files_count = 0

# adja meg az elérési utat
elérési út = "/ PATH_TO_DELETE"

# adja meg a napot
nap = 30

# napok másodpercre konvertálása
# time.time () az aktuális időt másodpercben adja vissza
másodperc = idő.time () – (napok * 24 * 60 * 60)

# annak ellenőrzése, hogy a fájl van-e az elérési útban
ha az os.path.exists (útvonal):

# iterálódik az útvonal minden egyes mappáján és fájlján
a root_mappához, mappákhoz, fájlokhoz az os.walk-ban (elérési út):

# a napok összehasonlítása
ha másodperc >= get_file_or_folder_age (root_folder):

# eltávolítja a mappát
remove_folder (root_folder)
delete_folders_count + = 1 # növekvő szám

# törés a root mappa eltávolítása után
szünet

más:

# a mappa ellenőrzése a gyökérmappából
a mappákban lévő mappához:

# mappa elérési útja
mappaút = os.path.join (gyökérmappa, mappa)

# összehasonlítva a napokkal
ha másodperc >= get_file_or_folder_age (mappaút):

# meghívja az remove_folder funkciót
remove_folder (FOLDER_PATH)
delete_folders_count + = 1 # növekvő szám

# az aktuális könyvtári fájlok ellenőrzése
fájlokban:

# fájl elérési út
file_path = os.path.join (gyökérmappa, fájl)

# a napok összehasonlítása
ha másodperc >= get_file_or_folder_age (fájlútvonal):

# meghívja az remove_file funkciót
remove_file (FILE_PATH)
delete_files_count + = 1 # növekvő szám

más:

# ha az elérési út nem könyvtár
# összehasonlítva a napokkal
ha másodperc >= get_file_or_folder_age (elérési út):

# a fájl meghívása
remove_file (path)
delete_files_count + = 1 # növekvő szám

más:

# fájl / mappa nem található
print (f”"{pálya}" nem található’)
delete_files_count + = 1 # növekvő szám

print (f"Összes mappát törölt: {Dele_folders_count}")
print (f"Összes fájl törölve: {Dele_files_count}")

def remove_folder (elérési út):

# eltávolítja a mappát
ha nem shutil.rmtree (elérési út):

# sikeres üzenet
print (f"A (z) {path} eltávolítása sikeresen megtörtént")

más:

# hibaüzenet
print (f"Nem sikerült törölni a (z) {elérési utat}")

def remove_file (elérési út):

# eltávolítja a fájlt
ha nem, os.remove (út):

# sikeres üzenet
print (f"A (z) {path} eltávolítása sikeresen megtörtént")

más:

# hibaüzenet
print (f"Nem sikerült törölni a (z) {elérési utat}")

def get_file_or_folder_age (elérési út):

# megkapja a fájl / mappa ctime-jét
# az idő másodpercben lesz megadva
ctime = os.stat (elérési út) .st_ctime

# az idő visszatérése
vissza ctime

ha __name__ == ‘__main__’:
fő()

A fenti két kódot a követelmény alapján ki kell igazítania a fenti kódban.

nap = 30
elérési út = "/ PATH_TO_DELETE"

X GB-nál nagyobb fájlok eltávolítása

Keressük meg az adott méretnél nagyobb fájlokat, és töröljük azokat. Hasonló a fenti szkripthez. Az előző szkriptben vettük kor paraméterként, és most fogjuk venni méret mint a törlés paramétere.

# az os modul importálása
import os

# A fájl méretét visszatérő függvény
def get_file_size (elérési út):

# fájlméret megszerzése byte-ban
méret = os.path.getsize (útvonal)

# visszaadja a fájl méretét
visszatérési méret

# funkció a fájl törléséhez
def remove_file (elérési út):

# a fájl törlése
ha nem, os.remove (út):

# siker
print (f"A (z) {elérési út} sikeresen törlődik")

más:

# hiba
print (f"Nem sikerült törölni a (z) {elérési utat}")

def main ():
# adja meg az elérési utat
elérési út = "ENTER_PATH_HERE"

# a fájl maximális méretét adja meg MB-ban
méret = 500

# annak ellenőrzése, hogy az út létezik-e vagy sem
ha az os.path.exists (útvonal):

# konvertálja a méretet bájtra
méret = méret * 1024 * 1024

# áthalad az almappákban
a root_mappához, mappákhoz, fájlokhoz az os.walk-ban (elérési út):

# ismétlődik a fájllistán
fájlokban:

# fájl elérési út beolvasása
file_path = os.path.join (gyökérmappa, fájl)

# a fájlméret ellenőrzése
ha get_file_size (file_path) >= méret:
# meghívja az remove_file funkciót
remove_file (FILE_PATH)

más:

# csak akkor ellenőrzi, ha az út fájl-e
ha az os.path.isfile (elérési út):
# Az elérési út nem egy dir
# a fájl közvetlen ellenőrzése
ha get_file_size (elérési út) >= méret:
# meghívja az remove_file funkciót
remove_file (path)

más:

# elérési út nem létezik
print (f"A (z) {path} nem létezik")

ha __name__ == ‘__main__’:
fő()

Állítsa be a következő két változót.

elérési út = "ENTER_PATH_HERE"
méret = 500

Fájlok eltávolítása egy adott kiterjesztéssel

Előfordulhat, hogy a fájlokat a kiterjesztés típusa szerint kell törölni. Tegyük fel .log fájl. Megtalálhatjuk egy fájl kiterjesztését az os.path.splitext (elérési út) módszerrel. Visszaad egy összeállítást, amely tartalmazza a fájl elérési útját és kiterjesztését.

# az os modul importálása
import os

# fő funkció
def main ():

# adja meg az elérési utat
elérési út = "PATH_TO_LOOK_FOR"

# adja meg a kiterjesztést
kiterjesztés = ".log"

# annak ellenőrzése, hogy létezik-e az út
ha az os.path.exists (útvonal):

# ellenőrizze, hogy az út könyvtár-e vagy sem
ha os.path.isdir (útvonal):

# az almappákban ismétlődik
a root_mappához, mappákhoz, fájlokhoz az os.walk-ban (elérési út):

# a fájlok ellenőrzése
fájlokban:

# fájl elérési út
file_path = os.path.join (gyökérmappa, fájl)

# kibontja a kiterjesztést a fájlnévből
fájl_kiterjesztés = os.path.splitext (fájl_út) [1]

# ellenőrzi a fájl kiterjesztését
ha kiterjesztés == fájl_kiterjesztés:

# a fájl törlése
ha nem, akkor az os.remove (fájl_útja):

# sikeres üzenet
print (f"A (z) {file_path} fájl sikeresen törölve")

más:

# hibaüzenet
print (f"A (z) {file_path} fájlt nem sikerült törölni")

más:

# Az elérési út nem egy könyvtár
print (f"A (z) {path} nem könyvtár")

más:

# útvonal nem létezik
print (f"A (z) {path} nem létezik")

ha __name__ == ‘__main__’:
# fő funkció meghívása
fő()

Ne felejtse el frissíteni az elérési út és a kiterjesztés változóját a fenti kódban, hogy megfeleljen az Ön igényeinek.

Azt javaslom, hogy tesztelje a szkripteket a NON PRODUCTION környezetben. Miután elégedett az eredményekkel, ütemezheti a cronon keresztül (ha Linuxot használ), hogy rendszeresen futtassa azt karbantartási munkákhoz. A Python nagyszerű ezt a cuccot elérni, és ha többet szeretne megtanulni, akkor nézd meg ezt Udemy tanfolyam.

CÍMKÉK:

  • Piton

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