V tomto článku se budeme zabývat tím, jak odstranit (odebrat) soubory a adresáře v Pythonu. Python poskytuje různé metody a funkce pro odstraňování souborů a adresářů. Jeden může odstranit soubor podle své potřeby.
Různé metody poskytované Pythonem jsou –
- Pomocí os.remove()
- Pomocí os.rmdir()
- Použití Shutil.rmtree()
- Pomocí pathlib.Path(cesta_prázdného_adresáře).rmdir()
Odstranění souboru/adresáře pomocí metody os.remove().
OS modul v Pythonu poskytuje funkce pro interakci s operačním systémem. Všechny funkce v os modulu se zvyšují OSError v případě neplatných nebo nepřístupných názvů souborů a cest nebo jiných argumentů, které mají správný typ, ale nejsou akceptovány operačním systémem.
metoda os.remove() v Pythonu se používá k odstranění nebo odstranění cesty k souboru. Tato metoda nelze odstranit nebo odstranit adresář . Pokud je zadaná cesta adresářem, bude metodou vyvoláno OSError.
Syntaxe os.remove()
Syntax: os.remove(cesta, *, dir_fd = Žádné)
Parametr: cesta: Objekt podobný cestě představující cestu k souboru. Objekt podobný cestě je buď řetězec nebo objekt typu bytes představující cestu.
dir_fd (volitelné): Popisovač souboru odkazující na adresář. Výchozí hodnota tohoto parametru je Žádná. Pokud je zadaná cesta absolutní, pak je dir_fd ignorován.
Poznámka: ‚*‘ v seznamu parametrů znamená, že všechny následující parametry (zde v našem případě ‚dir_fd‘) jsou parametry pouze pro klíčová slova a lze je zadat pomocí jejich názvu, nikoli jako poziční parametr.
Typ vrácení: Tato metoda nevrací žádnou hodnotu.
Příklad 1: Odstranění souboru v Pythonu
Předpokládejme, že soubor obsažený ve složce je:
Chceme odstranit soubor1 z výše uvedené složky. Níže je implementace.
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)> |
>
>
Výstup:
Příklad 2: Odeberte soubor s absolutní cestou
Pokud je zadaná cesta adresářem.
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> |
>
>
Výstup:
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'>
Příklad 3: Před odstraněním zkontrolujte, zda soubor existuje
Chyba zpracování při použití 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'>)> |
>
>
Výstup:
[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed>
Poznámka: Chcete-li se dozvědět více o os.remove(), klikněte sem .
Odstranění souboru/adresáře pomocí metody os.rmdir().
Metoda os.rmdir() v Pythonu se používá k odstranění nebo odstranění prázdného adresáře. OSError bude vyvoláno, pokud zadaná cesta není prázdný adresář.
Syntaxe os.rmdir()
Syntax: os.rmdir(cesta, *, dir_fd = Žádný)
Parametr:
cesta: Objekt podobný cestě představující cestu k souboru. Objekt podobný cestě je buď řetězec nebo objekt typu bytes představující cestu. dir_fd (volitelné): Popisovač souboru odkazující na adresář. Výchozí hodnota tohoto parametru je Žádná. Pokud je zadaná cesta absolutní, pak je dir_fd ignorován.
Poznámka: ‚*‘ v seznamu parametrů znamená, že všechny následující parametry (zde v našem případě ‚dir_fd‘) jsou parametry pouze pro klíčová slova a lze je zadat pomocí jejich názvu, nikoli jako poziční parametr.
Typ vrácení: Tato metoda nevrací žádnou hodnotu.
Příklad 1: Odstraňte všechny adresáře z adresáře
Předpokládejme, že adresáře jsou –
Chceme odstranit adresář Geeks. Níže je implementace.
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)> |
>
>
Výstup:
Příklad 2: Zpracování chyb při mazání adresáře
Zpracování chyb při použití 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> |
>
>
Výstup:
[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed>
Poznámka: Chcete-li se dozvědět více o os.rmdir() klikněte sem .
Odstranění souboru/adresáře pomocí Shutil.rmtree()
Shutil.rmtree() se používá k odstranění celého adresářového stromu, cesta musí ukazovat na adresář (ale ne symbolický odkaz na adresář).
Syntaxe Shutil.rmtree()
Syntax: shutil.rmtree(cesta, ignore_errors=nepravda, onerror=žádná)
Parametry:
cesta: Objekt podobný cestě představující cestu k souboru. Objekt podobný cestě je buď řetězec nebo objekt typu bytes představující cestu. ignore_errors: Pokud má ignore_errors hodnotu true, chyby vyplývající z neúspěšných odstranění budou ignorovány. onerror: Pokud je hodnota ignore_errors nepravdivá nebo je vynechána, jsou takové chyby zpracovány voláním obslužné rutiny určené parametrem onerror.
Odstraňte adresář a soubory v něm obsažené.
Příklad 1:
Předpokládejme, že adresář a podadresáře jsou následující.
# Nadřazený adresář:
# Adresář v nadřazeném adresáři:
# Soubor v podadresáři:
Příklad: Odstraňte všechny soubory z adresáře
Chceme odstranit adresář Autoři. Níže je implementace.
Python3
příkaz grep v linuxu
# 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)> |
>
>
Výstup:
Příklad 2: Ignorujte chybu při mazání adresáře
Předáním ignore_errors = 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> |
>
>
Výstup:
Traceback (poslední poslední hovor): Soubor D:/Pycharm projects/gfg/gfg.py, řádek 16, v Shutil.rmtree(cesta, ignore_errors=False) Soubor C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, řádek 730, v rmtree návrat _rmtree_unsafe(cesta, při chybě) Soubor C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.pyshutil. , řádek 589, v _rmtree_unsafe onerror(os.candir, cesta, sys.exc_info()) Soubor C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, řádek 586, v _rmtree_unsafe s os.scandir(cesta) jako scandir_it: FileNotFoundError: [WinError 3] Systém nemůže najít zadanou cestu: 'D:/Pycharm projects/techcodeview.com/Authors'
Příklad 3: Obsluha výjimky
Při onerror by měla být předána funkce, která musí obsahovat tři parametry.
- funkce – funkce, která vyvolala výjimku. cesta – předaná cesta, která vyvolala výjimku při odstraňování excinfo – informace o výjimce vyvolané sys.exc_info()
Níže je implementace
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)> |
>
>
Výstup:
Inside handler (, FileNotFoundError(2, ‚Systém nemůže najít zadanou cestu‘), ) Inside handler (, FileNotFoundError(2, ‚Systém nemůže najít zadaný soubor‘), )
Odstranění souboru/adresáře pomocí pathlib.Path(cesta_prázdného_adresáře).rmdir()
Prázdný adresář lze také odstranit nebo smazat pomocí metody rmdir() modulu pathlib. Nejprve musíme nastavit cestu k adresáři a poté na této cestě zavoláme metodu rmdir()
Syntaxe pathlib.Path
Syntaxe: pathlib.Path(cesta_prázdného_adresáře).rmdir()
Parametr:
empty_dir_path: Objekt podobný cestě představující prázdnou cestu k adresáři. Objekt podobný cestě je buď řetězec nebo objekt typu bytes představující cestu.
Typ vrácení: Tato metoda nevrací žádnou hodnotu.
Příklad: Odstraňte prázdný adresář pomocí rmdir()
V tomto příkladu odstraníme prázdnou složku, stačí zadat název složky, pokud je v kořenovém adresáři
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)> |
>
>
Výstup:
Deleted 'Untitled Folder' successfully>