Kuidas Pythoniga kaustu luua ja kustutada – os ja pathlib

1. Kausta loomise põhiline meetod Pythonis

Pythonis on olemas lihtne viis kaustade loomiseks, kasutades standardraamatukogu. Peamiselt kasutatakse os moodulit. Selles sektsioonis selgitame üksikasjalikult os mooduli abil kausta loomise meetodit.

Kausta loomise meetod Pythonis: os moodul

os mooduli kasutamisega saab programmis kausta luua. See on kasulik näiteks andmete korraldamiseks või logide salvestamiseks mõeldud kataloogi loomiseks. Põhiline kausta loomise meetod on järgmine.
import os

# Määra loodava kausta tee
path = 'example_folder'

# Loo kaust
os.mkdir(path)
Selles koodis kasutatakse os.mkdir() funktsiooni uue kausta “example_folder” loomiseks. Kuid see funktsioon tekitab FileExistsError juhul, kui kaust juba eksisteerib.

Mitmekihiliste kaustade loomine: os.makedirs()

Kui soovite luua mitte ainult üksik kaust, vaid ka mitmekihilisi katalooge korraga, kasutage os.makedirs() funktsiooni.
import os

# Määra mitmekihiline kaust
path = 'example_folder/subfolder'

# Loo kaust isegi siis, kui vanemkataloog ei eksisteeri
os.makedirs(path)
Nii, kasutades os.makedirs(), saab määratud teel puuduvad vanemkataloogid samuti korraga luua. See võimaldab kaustastruktuuri korraga luua, mis on mugav.

Vea käsitlemine: exist_ok=True kasutamine

Kui kaust juba eksisteerib, kuid soovite vältida vea teket ja jätkata töötlemist, kasutage exist_ok=True valikut. Nagu alljärgnevas näites, ei teki viga isegi kui kaust on olemas.
import os

path = 'example_folder/subfolder'

# Ignoreeri viga isegi siis, kui kaust juba eksisteerib
os.makedirs(path, exist_ok=True)
See võimaldab, et isegi kui programm käivitub korduvalt ja püüab luua sama kausta, ei teki viga, mis võimaldab kirjutada vastupidavat koodi.

2. Kaustade loomine Pathlib mooduli abil

Alates Python 3.4 on pathlib moodul lisatud standardraamatukogusse. See moodul võimaldab objektorienteeritud viisil tegeleda teedega ning võimaldab intuitiivselt kaustu luua. Siin selgitame, kuidas pathlib moodulit kasutades kaustu luua.

Pathlib mooduli kasutamine

pathlib.Path() kasutades on võimalik katalooge luua. Nagu os mooduliga, saab exist_ok=True määrata, et olemasoleva kausta korral ei tekiks viga.
from pathlib import Path

# Määra kausta tee, mida soovid luua
path = Path('example_folder/subfolder')

# Loo kaust
path.mkdir(parents=True, exist_ok=True)
Selles koodis määrates parents=True, luuakse ka vanemkataloog, kui see ei eksisteeri. Sellega saavutatakse sama käitumine nagu os.makedirs().

Pathlib mooduli eelised

pathlib mooduli suur eelis on, et see võimaldab objektorienteeritud operatsioone. Path objekti kasutades saab lisaks kaustade loomisele ka teede ühendamist ja failide töötlemist teha intuitiivselt. See parandab koodi loetavust ja hooldatavust.
年収訴求

3. Kataloogide loomise veahaldamine

Kataloogi loomisel võib tekkida mitmesuguseid vigu. Näiteks kui puuduvad õigused või määratud tee on kehtetu. Selles sektsioonis selgitame, kuidas rakendada veahaldust.

Õiguste vead ja kehtetute teede käsitlemine

os.makedirs() või pathlib.Path().mkdir() kasutamisel kataloogi loomisel tekivad tavapärased vead, nagu PermissionError ja FileNotFoundError. Nende vigade korrektne käsitlemine võimaldab luua vastupidavama programmi. Allpool on veahaldamise näide.
import os

path = 'example_folder/subfolder'

try:
    os.makedirs(path, exist_ok=True)
    print(f'Kataloog "{path}" loodi.')
except PermissionError:
    print('Kataloogi loomiseks puuduvad õigused.')
except FileNotFoundError:
    print('Määratud tee on kehtetu.')
except Exception as e:
    print(f'Tekkis ootamatu viga: {e}')
Selles koodis näidatakse iga tavapärase vea käsitlemist ning ka ootamatutele vigadele reageerimist. See tagab, et programm ei katkesta töö ja vead töödeldakse korrektselt.

Täiustatud veahaldus

Kataloogi loomise ebaõnnestumise olukordades tuleks kaaluda vigade sisu logimise ja kasutajale teavitamise võimalust. Eriti suurtes rakendustes mõjutab veahaldus kasutajakogemust märkimisväärselt, seega on vajalik põhjalik lähenemine.

4. Kaustade kustutamise meetod

Lisaks kaustade loomisele on sageli vaja kustutada kaustad, mida enam ei vajata. Pythonis saab standardraamatukogu os moodulit või shutil moodulit kasutada kaustade kustutamiseks. Siin selgitame konkreetseid meetodeid.

os.rmdir() kasutades kausta kustutamine

os moodulis on funktsioon rmdir(), millega saab kausta kustutada. Kuid see funktsioon nõuab, et kustutatav kaust oleks tühi.
import os

# Määrake kustutatava kausta tee
path = 'example_folder/subfolder'

# Kustuta kaust
os.rmdir(path)
See kood töötab õigesti ainult siis, kui määratud kaust on tühi. Kui kaustas on faile või teisi katalooge, tekib OSError.

shutil.rmtree() kasutades kausta rekursiivne kustutamine

Kui kaustas on faile või teisi alamkaustu, saab shutil mooduli rmtree() funktsiooni abil kausta ja selle sisu rekursiivselt kustutada.
import shutil

# Määrake kustutatava kausta tee
path = 'example_folder/subfolder'

# Kustuta kaust ja selle sisu
shutil.rmtree(path)
See meetod võimaldab kausta kustutada ka siis, kui kataloog ei ole tühi, mistõttu on see kasulik kogu kataloogipuude kustutamisel. Kuid kustutatud faile ja kaustu ei saa taastada, seega tuleb olla ettevaatlik.

Vea käsitlemine

Kausta kustutamisel on samuti oluline vigade käsitlemine. Näiteks tekib viga, kui puuduvad õigused kausta kustutamiseks või kui määratud tee on kehtetu. Allpool on näide koodist, mis sisaldab veahaldust.
import shutil

path = 'example_folder/subfolder'

try:
    shutil.rmtree(path)
    print(f'Kaust "{path}" on kustutatud.')
except PermissionError:
    print('Kausta kustutamiseks puuduvad õigused.')
except FileNotFoundError:
    print('Määratud kausta ei leitud.')
except Exception as e:
    print(f'Tekkis ootamatu viga: {e}')
See kood käsitleb kustutamise ajal tekkivaid vigu ja suudab paindlikult reageerida ka ootamatutele vigadele.

5. Tegelikud rakendusjuhtumid

Siin tutvustame rakendusjuhtumeid, mis kombineerivad kaustade loomist ja kustutamist ning on kasulikud tegelikes projektides ja andmetöötluses. Eriti eeldame juhtumeid, kus aastaste või kuude andmeid korraldatakse kaustade kaupa.

Kaustade loomine aasta ja kuu kaupa

Näiteks, kui soovite andmeid korraldada aastate või kuude kaupa, saate luua skripti, mis loob kaustad automaatselt.
import os
from datetime import datetime

# Praeguse aasta ja kuu hankimine
current_year = datetime.now().year
current_month = datetime.now().month

# Kausta tee määramine
folder_path = f'data/{current_year}/{current_month}'

# Kausta loomine
os.makedirs(folder_path, exist_ok=True)
print(f'Kaust "{folder_path}" on loodud.')
See skript loob automaatselt kaustad praeguse aasta ja kuu põhjal ning aitab andmeid tõhusalt korraldada.

Kaustade massiline kustutamine

Kui soovite teatud tingimuste alusel mittevajalikke kaustu korraga kustutada, saate Pythoniga seda tõhusalt teha. Näiteks on võimalik luua skript, mis kustutab vanad andmekaustad, mis on teatud ajaperioodi üle.
import shutil
import os
from datetime import datetime, timedelta

# 30 päeva tagasi oleva kuupäeva hankimine
threshold_date = datetime.now() - timedelta(days=30)

# Kustutatavate kaustade baasrada
base_path = 'data/'

# Kaustade kontrollimine ja vanade kaustade kustutamine
for folder_name in os.listdir(base_path):
    folder_path = os.path.join(base_path, folder_name)
    if os.path.isdir(folder_path):
        folder_date = datetime.strptime(folder_name, '%Y-%m-%d')
        if folder_date < threshold_date:
            shutil.rmtree(folder_path)
            print(f'Vana kaust "{folder_path}" on kustutatud.')
Sellistes rakendusjuhtudes saab programmi abil kaustade haldamise ja korraldamise automatiseerida, vähendades käsitsi tehtavaid toiminguid.

6. Kokkuvõte

Selles artiklis selgitati, kuidas Pythoniga kaustu luua ja kustutada. os-moodulit ja pathlib-moodulit kasutades tutvustasime laialdaselt põhilisi toiminguid, alates kausta loomise veahaldusest kuni tegelike rakendusteni. Nende teadmiste kasutamisega saate luua programme, mis haldavad andmeid ja faile tõhusalt. Järgmise sammuna on soovitatav õppida ka kõrgema taseme andmehalduse tehnikaid, nagu failide töötlemine ja pakkimine, lisaks kausta loomisele ja kustutamisele.
年収訴求