Lihtne kataloogide loomine Pythonis: mkdir vs makedirs

1. Sissejuhatus

Pythoniga on failide ja kataloogide haldamine väga lihtne. Eriti kataloogide loomine on üks kõige tavalisemaid ülesandeid failide korraldamiseks, varundamiseks ja nende automaatseks genereerimiseks. See juhend annab üksikasjaliku selgituse, kuidas luua katalooge kasutades os moodulit ja pathlib moodulit. Samuti käsitletakse rekursiivset kataloogide loomist ja veahaldust, eesmärgiga olla selge Python’i algajatele.

2. Kataloogide loomine kasutades os.mkdir()

Põhiline kasutamine

os.mkdir() on põhiline viis ühe kataloogi loomiseks määratud teel. Kuid sellel funktsioonil on piirang: see tekitab vea, kui vanemkataloog ei eksisteeri. Näiteks näitab järgmine kood lihtsat kataloogi loomise meetodit.

import os

# Specify the path of the directory to create
dir_path = './new_directory'

# Create the directory
os.mkdir(dir_path)

Selle koodiga luuakse kataloog määratud teele, kuid kui sama nimega kataloog juba eksisteerib, tekib FileExistsError. See on punkt, mida os.mkdir() kasutamisel tähele panna.

Veahaldus

Vigu saab vältida, kontrollides enne loomist, kas kataloog juba eksisteerib. Järgnevas koodis on näide sellest.

import os

# Specify the path of the directory to create
dir_path = './new_directory'

# Check whether the directory exists
if not os.path.exists(dir_path):
    os.mkdir(dir_path)
else:
    print(f"The directory '{dir_path}' already exists.")

Selle meetodi abil saab vältida vigu, mis tekivad, kui ekslikult püüab luua juba olemasolevat kataloogi.

侍エンジニア塾

3. Rekursiivne kataloogide loomine kasutades os.makedirs()

Rekursiivne kataloogide loomine

os.makedirs() võib pidada os.mkdir() laienduseks. Kuna see suudab luua korraga mitu taset katalooge, loob see vahekatalooge isegi siis, kui vanemkataloog ei eksisteeri.

import os

# Path including intermediate directories
dir_path = './parent_directory/sub_directory'

# Create directories recursively
os.makedirs(dir_path)

Selles näites luuakse korraga parent_directory ja selle sub_directory. See, et kõik kataloogid saab luua veata isegi siis, kui vahekataloogid puuduvad, näitab selle suurt mugavust.

Veahaldus kasutades exist_ok=True

os.makedirs()-l on exist_ok valik, mis võimaldab protsessil jätkata ilma viga tekitamata, isegi kui kataloog juba eksisteerib.

import os

dir_path = './parent_directory/sub_directory'

# Do not raise an error even if the directory already exists
os.makedirs(dir_path, exist_ok=True)

Selle meetodi kasutamine kõrvaldab vajaduse eelnevalt kontrollida, kas kataloog eksisteerib, lihtsustades veahaldust.

4. Kataloogide loomine pathlib mooduliga

Kataloogide loomine Path‑objektide abil

pathlib moodul on mugav failisüsteemi teede operatsioonide teostamiseks ning on saadaval alates Python 3.4-st. Path() objektid parandavad koodi loetavust.

from pathlib import Path

# Specify the directory path
dir_path = Path('./new_directory')

# Create the directory
dir_path.mkdir()

pathlibi eelis on see, et see võimaldab objektorienteeritud teede manipuleerimist, suurendades koodi intuitiivsust.

Rekursiivne kataloogide loomine ja veahaldus

Isegi pathlibi kasutades rekursiivse kataloogide loomise puhul saab seda hõlpsasti saavutada, määrates lihtsalt ühe valiku.

from pathlib import Path

# Path including intermediate directories
dir_path = Path('./parent_directory/sub_directory')

# Create including intermediate directories
dir_path.mkdir(parents=True, exist_ok=True)

Selles koodis luuakse korraga mitu taset katalooge, sealhulgas vahekataloogid, ning viga ei tekita, kui kataloogid juba eksisteerivad.

5. Kataloogi olemasolu kontrollimine ja veahaldus

Kataloogi olemasolu kontrollimine on oluline osa veahaldusest. os moodulit ja pathlib kasutatakse kataloogi olemasolu kontrollimiseks ning kataloogitoimingute turvaliseks sooritamiseks.

Kontrollimeetod os mooduli kasutamisega

import os

dir_path = './new_directory'

if os.path.exists(dir_path):
    print(f"Directory '{dir_path}' already exists.")
else:
    print(f"Directory '{dir_path}' does not exist.")

Kontrollimeetod pathlib kasutamisega

from pathlib import Path

dir_path = Path('./new_directory')

if dir_path.exists():
    print(f"Directory '{dir_path}' already exists.")
else:
    print(f"Directory '{dir_path}' does not exist.")

6. Kokkuvõte

Selles artiklis andsime üksikasjaliku selgituse erinevatest viisidest kataloogide loomiseks Pythonis. Õppisin os.mkdir() ja os.makedirs() erinevusi, sealhulgas kuidas käsitleda rekursiivset kataloogide loomist ja veahaldust. Veelgi enam, avastasin, et kasutades pathlib‑i, uut standardmoodulit Pythonis, saan kirjutada koodi, mis on lihtsam ja loetavam.

Vali meetod, mis kõige paremini vastab sinu kasutusjuhtumile, ja teosta tõhusaid kataloogitoiminguid.