Wszystkie funkcje w module os podnoszą OSEBłąd w przypadku nieprawidłowych lub niedostępnych nazw plików i ścieżek lub innych argumentów, które mają poprawny typ, ale nie są akceptowane przez system operacyjny. W tym artykule dowiemy się, jak rekursywnie tworzyć katalogi przy użyciu modułu os, a także o metodzie os.makedirs().
Składnia funkcji os.makedirs() w Pythonie
Składnia: os.makedirs(ścieżka, tryb = 0o777, istnienie_ok = fałsz)
Parametr:
- ścieżka : Obiekt podobny do ścieżki reprezentujący ścieżkę systemu plików. Obiekt podobny do ścieżki to obiekt typu string lub bytes reprezentujący ścieżkę.
- tryb (opcjonalnie): Wartość całkowita reprezentująca tryb nowo utworzonego katalogu. Jeśli ten parametr zostanie pominięty, zostanie użyta wartość domyślna Oo777.
- istnieje_ok (opcjonalnie): dla tego parametru używana jest wartość domyślna False. Jeśli katalog docelowy już istnieje, zostanie zgłoszony OSError, jeśli jego wartość to False, w przeciwnym razie nie. Dla wartości True pozostawia katalog bez zmian.
Typ zwrotu: Ta metoda nie zwraca żadnej wartości.
Metoda os.makedirs() w Pythonie
os.makedirs() metoda w Pyton służy do rekurencyjnego tworzenia katalogu. Oznacza to, że podczas tworzenia katalogu liścia, jeśli brakuje jakiegoś katalogu średniopoziomowego, os.makedirs() metoda utworzy je wszystkie.
Rozważmy na przykład następującą ścieżkę:
/home/User/Documents/GeeksForGeeks/Authors/ihritik>
Załóżmy, że chcemy utworzyć katalog „ihritik”, ale katalogi „GeeksForGeeks” i „Authors” są niedostępne w ścieżce. Następnie os.makedirs() metoda utworzy cały niedostępny/brakujący katalog w określonej ścieżce. Najpierw zostaną utworzone „GeeksForGeeks” i „Autorzy”, a następnie zostanie utworzony katalog „ihritik”.
Przykłady funkcji Pythona os.makedirs().
Poniżej znajduje się kilka przykładów funkcji os.makedirs(), dzięki której możemy zobaczyć, jak rekurencyjnie tworzyć katalogi za pomocą moduł systemu operacyjnego :
Tworzenie katalogu za pomocąos.makedirs()>
W tym przykładzieos.makedirs()>metoda służy do tworzenia zagnieżdżonych katalogów. Pierwsza sekcja tworzy katalog o nazwie ihritik w ścieżce katalogu autorów. Druga sekcja z określonymi uprawnieniami tworzy katalog c zagnieżdżony w techcodeview.com/a/b.
Python3
import> os> # Leaf directory> directory>=> 'ihritik'> # Parent Directories> parent_dir>=> '/home/User/Documents/GeeksForGeeks/Authors'> # Path> path>=> os.path.join(parent_dir, directory)> # Create the directory 'ihritik'> os.makedirs(path)> print>(>'Directory '%s' created'> %> directory)> # Leaf directory> directory>=> 'c'> # Parent Directories> parent_dir>=> '/home/User/Documents/techcodeview.com/a/b'> # mode> mode>=> 0o666> path>=> os.path.join(parent_dir, directory)> os.makedirs(path, mode)> print>(>'Directory '%s' created'> %> directory)> |
>
>
Wyjście:
Directory 'ihritik' created Directory 'c' created>
Błędy podczas korzystania z metody os.makedirs().
W tym przykładzieos.makedirs()>metoda próbuje utworzyć katalog o nazwie ihritik w ścieżce GeeksForGeeks. Jeśli katalog już istnieje, metoda wywołuje plikOSError>. Po pomyślnym utworzeniu zostanie wydrukowany komunikat potwierdzający.
obiekt do jsona w Javie
Python3
import> os> # Directory> directory>=> 'ihritik'> # Parent Directory path> parent_dir>=> '/home/User/Documents/GeeksForGeeks'> # Path> path>=> os.path.join(parent_dir, directory)> # Create the directory 'ihritik'> os.makedirs(path)> print>(>'Directory '%s' created'> %> directory)> |
>
>
Wyjście:
Traceback (most recent call last): File 'makedirs.py', line 21, in os.makedirs(path) File '/usr/lib/python3.6/os.py', line 220, in makedirs mkdir(name, mode) FileExistsError: [Errno 17] File exists: '/home/User/Documents/GeeksForGeeks/ihritik'>
Obsługa błędów podczas korzystania z metody os.makedirs().
W tym przykładzieos.makedirs()>metoda jest używana zexist_ok>parametr ustawiony naTrue>stłumićOSError>jeśli katalog już istnieje. Jeśli katalog nie istnieje, zostanie utworzony. Jednak inneOSError>wyjątki, takie jak nieprawidłowa nazwa ścieżki, nadal mogą być zgłaszane i muszą być obsługiwane osobno.
Python3
import> os> # Directory> directory>=> 'ihritik'> # Parent Directory path> parent_dir>=> '/home/ihritik/Desktop/GeeksForGeeks'> # Path> path>=> os.path.join(parent_dir, directory)> # Create the directory 'ihritik'> try>:> >os.makedirs(path, exist_ok>=>True>)> >print>(>'Directory '%s' created successfully'> %> directory)> except> OSError as error:> >print>(>'Directory '%s' can not be created'>)> |
>
>
Wyjście:
Directory 'ihritik' created successfully>