logo

Odstraňte adresář nebo soubor pomocí Pythonu

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 –

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>