Usuń katalog lub plik za pomocą Pythona
W tym artykule omówimy, jak usunąć (usunąć) pliki i katalogi w Pythonie. Python udostępnia różne metody i funkcje usuwania plików i katalogów. Można usunąć plik w zależności od potrzeb.
Różne metody dostarczane przez Python to –
- Korzystanie z os.remove()
- Korzystanie z os.rmdir()
- Korzystanie z Shutil.rmtree()
- Korzystanie ze ścieżki pathlib.Path(pusta_ścieżka_katalogu).rmdir()
Usuwanie pliku/katalogu przy użyciu metody os.remove().
Moduł systemu operacyjnego w Pythonie udostępnia funkcje umożliwiające interakcję z systemem operacyjnym. 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.
metoda os.remove() w Pythonie służy do usuwania lub usuwania ścieżki pliku. Ta metoda nie można usunąć ani usunąć katalogu . Jeśli podana ścieżka jest katalogiem, metoda wywoła OSError.
Składnia os.remove()
Składnia: os.remove(ścieżka, *, dir_fd = Brak)
Parametr: ścieżka: Obiekt podobny do ścieżki reprezentujący ścieżkę pliku. Obiekt podobny do ścieżki to obiekt typu string lub bytes reprezentujący ścieżkę.
dir_fd (opcjonalnie): Deskryptor pliku odnoszący się do katalogu. Domyślna wartość tego parametru to Brak. Jeśli określona ścieżka jest bezwzględna, katalog dir_fd jest ignorowany.
Notatka: Znak „*” na liście parametrów wskazuje, że wszystkie kolejne parametry (w naszym przypadku „dir_fd”) są parametrami zawierającymi wyłącznie słowa kluczowe i można je podać, używając ich nazwy, a nie parametru pozycyjnego.
Typ zwrotu: Ta metoda nie zwraca żadnej wartości.
Przykład 1: Usuń plik w Pythonie
Załóżmy, że plik zawarty w folderze to:
Chcemy usunąć plik 1 z powyższego folderu. Poniżej realizacja.
Python3
# Python program to explain os.remove() method> # importing os module> import> os> # File name> file> => 'file1.txt'> # File location> location> => 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil/'> # Path> path> => os.path.join(location,> file> )> # Remove the file> # 'file.txt'> os.remove(path)> |
Wyjście:
Przykład 2: Usuń plik ze ścieżką bezwzględną
Jeśli określona ścieżka jest katalogiem.
Python3
# Python program to explain os.remove() method> # importing os module> import> os> # Directory name> dir> => 'Nikhil'> # Path> location> => 'D:/Pycharm projects/techcodeview.com/Authors/'> path> => os.path.join(location,> dir> )> # Remove the specified> # file path> os.remove(path)> print> (> '% s has been removed successfully'> %> dir> )> # if the specified path> # is a directory then> # 'IsADirectoryError' error> # will raised> # Similarly if the specified> # file path does not exists or> # is invalid then corresponding> # OSError will be raised> |
Wyjście:
Traceback (most recent call last): File 'osremove.py', line 11, in os.remove(path) IsADirectoryError: [Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil'
Przykład 3: Sprawdź, czy plik istnieje przed usunięciem
Błąd obsługi podczas korzystania z metody os.remove().
Python3
# Python program to explain os.remove() method> # importing os module> import> os> # path> path> => 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil'> # Remove the specified> # file path> try> :> > os.remove(path)> > print> (> '% s removed successfully'> %> path)> except> OSError as error:> > print> (error)> > print> (> 'File path can not be removed'> )> |
Wyjście:
[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed
Notatka: Aby dowiedzieć się więcej o os.remove() kliknij tutaj.
Usuwanie pliku/katalogu przy użyciu metody os.rmdir().
Metoda os.rmdir() w Pythonie służy do usuwania lub kasowania pustego katalogu. OSEBłąd zostanie wywołany, jeśli określona ścieżka nie jest pustym katalogiem.
Składnia os.rmdir()
Składnia: os.rmdir(ścieżka, *, katalog_fd = Brak)
Parametr:
ścieżka: Obiekt podobny do ścieżki reprezentujący ścieżkę pliku. Obiekt podobny do ścieżki to obiekt typu string lub bytes reprezentujący ścieżkę. dir_fd (opcjonalnie): Deskryptor pliku odnoszący się do katalogu. Domyślna wartość tego parametru to Brak. Jeśli określona ścieżka jest bezwzględna, katalog dir_fd jest ignorowany.
Notatka: Znak „*” na liście parametrów wskazuje, że wszystkie kolejne parametry (w naszym przypadku „dir_fd”) są parametrami zawierającymi wyłącznie słowa kluczowe i można je podać, używając ich nazwy, a nie parametru pozycyjnego.
Typ zwrotu: Ta metoda nie zwraca żadnej wartości.
Przykład 1: Usuń wszystkie katalogi z katalogu
Załóżmy, że katalogi to –
Chcemy usunąć katalog Geeks. Poniżej realizacja.
Python3
# importing os module> import> os> # Directory name> directory> => 'Geeks'> # Parent Directory> parent> => 'D:/Pycharm projects/'> # Path> path> => os.path.join(parent, directory)> # Remove the Directory> # 'Geeks'> os.rmdir(path)> |
Wyjście:
Przykład 2: Obsługa błędów podczas usuwania katalogu
Obsługa błędów podczas korzystania z metody os.rmdir(),
Python3
# Python program to explain os.rmdir() method> # importing os module> import> os> # Directory name> directory> => 'techcodeview.com'> # Parent Directory> parent> => 'D:/Pycharm projects/'> # Path> path> => os.path.join(parent, directory)> # Remove the Directory> # 'techcodeview.com'> try> :> > os.rmdir(path)> > print> (> 'Directory '% s' has been removed successfully'> %> directory)> except> OSError as error:> > print> (error)> > print> (> 'Directory '% s' can not be removed'> %> directory)> # if the specified path> # is not an empty directory> # then permission error will> # be raised> # similarly if specified path> # is invalid or is not a> # directory then corresponding> # OSError will be raised> |
Wyjście:
[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed
Notatka: Aby dowiedzieć się więcej o os.rmdir() kliknij tutaj.
Usuwanie pliku/katalogu za pomocą Shutil.rmtree()
Shutil.rmtree() służy do usuwania całego drzewa katalogów, ścieżka musi wskazywać na katalog (ale nie na dowiązanie symboliczne do katalogu).
Składnia Shutil.rmtree()
Składnia: shutil.rmtree(ścieżka, ignorowanie_błędów=Fałsz, onerror=Brak)
Parametry:
ścieżka: Obiekt podobny do ścieżki reprezentujący ścieżkę pliku. Obiekt podobny do ścieżki to obiekt typu string lub bytes reprezentujący ścieżkę. ignorowanie_błędów: Jeśli ignorowanie_błędów ma wartość true, błędy powstałe w wyniku nieudanych usunięć zostaną zignorowane. onerror: Jeśli ignorowanie_błędów ma wartość false lub jest pominięte, takie błędy są obsługiwane przez wywołanie procedury obsługi określonej przez onerror.
Usuń katalog i zawarte w nim pliki.
Przykład 1:
Załóżmy, że katalog i podkatalogi są następujące.
# Nadrzędna Lokalizacja:
# Katalog w katalogu nadrzędnym:
# Plik w podkatalogu:
Przykład: Usuń wszystkie pliki z katalogu
Chcemy usunąć katalog Authors. Poniżej realizacja.
Python3
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path)> |
Wyjście:
Przykład 2: Zignoruj błąd podczas usuwania katalogu
Przekazując ignorowanie_błędów = True.
Python3
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path, ignore_errors> => False> )> # making ignore_errors = True will not raise> # a FileNotFoundError> |
Wyjście:
Traceback (ostatnie ostatnie połączenie): Plik D:/Pycharm projekty/gfg/gfg.py, linia 16, w shutil.rmtree(ścieżka, ignorowanie_błędów=False) Plik C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, linia 730, w rmtree return _rmtree_unsafe(path, onerror) Plik C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , linia 589, w _rmtree_unsafe onerror(os.scandir, ścieżka, sys.exc_info()) Plik C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, linia 586, w _rmtree_unsafe z os.scandir(path) jako scandir_it: FileNotFoundError: [WinError 3] System nie może znaleźć określonej ścieżki: „D:/Pycharm projekty/techcodeview.com/Authors”
Przykład 3: Procedura obsługi wyjątków
W onerror należy przekazać funkcję, która musi zawierać trzy parametry.
- funkcja – funkcja, która zgłosiła wyjątek. path – przekazana nazwa ścieżki, która wywołała wyjątek podczas usuwania. excinfo – informacja o wyjątku wywołana przez sys.exc_info()
Poniżej realizacja
Python3
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # exception handler> def> handler(func, path, exc_info):> > print> (> 'Inside handler'> )> > print> (exc_info)> # location> location> => 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path> => os.path.join(location,> dir> )> # removing directory> shutil.rmtree(path, onerror> => handler)> |
Wyjście:
Procedura obsługi wewnętrznej (, FileNotFoundError(2, „System nie może znaleźć określonej ścieżki”), ) Procedura obsługi wewnętrznej (, FileNotFoundError(2, „System nie może znaleźć określonego pliku”), )
Usuwanie pliku/katalogu za pomocą pathlib.Path(empty_dir_path).rmdir()
Pusty katalog można również usunąć lub skasować za pomocą metody rmdir() modułu pathlib. Najpierw musimy ustawić ścieżkę do katalogu, a następnie wywołać na tej ścieżce metodę rmdir().
Składnia pathlib.Path
Składnia: pathlib.Path(pusta ścieżka_katalogu).rmdir()
Parametr:
pusty_katalog_ścieżka: Obiekt podobny do ścieżki reprezentujący pustą ścieżkę do katalogu. Obiekt podobny do ścieżki to obiekt typu string lub bytes reprezentujący ścieżkę.
Typ zwrotu: Ta metoda nie zwraca żadnej wartości.
Przykład: usuń pusty katalog za pomocą rmdir()
W tym przykładzie usuniemy pusty folder, wystarczy podać nazwę folderu, jeśli znajduje się on w katalogu głównym
Python3
import> pathlib> # Deleting an empty folder> # Put your file address> empty_dir> => r> 'Untitled Folder'> path> => pathlib.Path(empty_dir).rmdir()> print> (> 'Deleted '%s' successfully'> %> empty_dir)> |
Wyjście:
Deleted 'Untitled Folder' successfully