Odstráňte adresár alebo súbor pomocou Pythonu

Odstráňte adresár alebo súbor pomocou Pythonu

V tomto článku sa budeme zaoberať tým, ako odstrániť (odstrániť) súbory a adresáre v Pythone. Python poskytuje rôzne metódy a funkcie na odstraňovanie súborov a adresárov. Jeden môže odstrániť súbor podľa svojich potrieb.

Python poskytuje rôzne metódy –

Odstránenie súboru/adresára pomocou metódy os.remove().

modul OS v Pythone poskytuje funkcie na interakciu s operačným systémom. Všetky funkcie v module OS sa zvyšujú OSError v prípade neplatných alebo neprístupných názvov súborov a ciest alebo iných argumentov, ktoré majú správny typ, ale nie sú akceptované operačným systémom.

metóda os.remove() v Pythone sa používa na odstránenie alebo odstránenie cesty k súboru. Táto metóda nemožno odstrániť alebo odstrániť adresár . Ak je zadaná cesta adresárom, metóda vyvolá OSError.

Syntax os.remove()

Syntax: os.remove(cesta, *, dir_fd = Žiadne)

Parameter: cesta: Objekt podobný ceste predstavujúci cestu k súboru. Objekt podobný ceste je buď reťazec alebo objekt typu bytes predstavujúci cestu.

    dir_fd (voliteľné): Deskriptor súboru odkazujúci na adresár. Predvolená hodnota tohto parametra je Žiadna. Ak je zadaná cesta absolútna, potom sa dir_fd ignoruje.

Poznámka: „*“ v zozname parametrov znamená, že všetky nasledujúce parametre (tu v našom prípade „dir_fd“) sú parametre iba pre kľúčové slová a možno ich zadať pomocou ich názvu, nie ako pozičného parametra.

Typ návratu: Táto metóda nevracia žiadnu hodnotu.

Príklad 1: Odstránenie súboru v Pythone

Predpokladajme, že súbor obsiahnutý v priečinku je:

Chceme odstrániť súbor1 z vyššie uvedeného priečinka. Nižšie je uvedená implementácia.

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ýkon:

Príklad 2: Odstráňte súbor s absolútnou cestou

Ak je zadaná cesta adresárom.

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ýkon:

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' 

Príklad 3: Pred odstránením skontrolujte, či súbor existuje

Chyba spracovania pri použití metódy 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ýkon:

[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed 

Poznámka: Ak sa chcete dozvedieť viac o os.remove(), kliknite sem.

Odstránenie súboru/adresára pomocou metódy os.rmdir().

Metóda os.rmdir() v Pythone sa používa na odstránenie alebo odstránenie prázdneho adresára. OSError sa vyvolá, ak zadaná cesta nie je prázdnym adresárom.

Syntax os.rmdir()

Syntax: os.rmdir(cesta, *, dir_fd = Žiadne)

Parameter:

    cesta: Objekt podobný ceste predstavujúci cestu k súboru. Objekt podobný ceste je buď reťazec alebo objekt typu bytes predstavujúci cestu. dir_fd (voliteľné): Deskriptor súboru odkazujúci na adresár. Predvolená hodnota tohto parametra je Žiadna. Ak je zadaná cesta absolútna, potom sa dir_fd ignoruje.

Poznámka: „*“ v zozname parametrov znamená, že všetky nasledujúce parametre (tu v našom prípade „dir_fd“) sú parametre iba pre kľúčové slová a možno ich zadať pomocou ich názvu, nie ako pozičného parametra.

Typ návratu: Táto metóda nevracia žiadnu hodnotu.

Príklad 1: Odstráňte všetky adresáre z adresára

Predpokladajme, že adresáre sú –

Chceme odstrániť adresár Geeks. Nižšie je uvedená implementácia.

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ýkon:

Príklad 2: Spracovanie chýb pri odstraňovaní adresára

Spracovanie chýb pri použití metódy 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ýkon:

[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed 

Poznámka: Ak sa chcete dozvedieť viac o os.rmdir(), kliknite sem.

Odstránenie súboru/adresára pomocou funkcie Shutil.rmtree()

Shutil.rmtree() sa používa na odstránenie celého adresárového stromu, cesta musí ukazovať na adresár (ale nie symbolický odkaz na adresár).

Syntax funkcie Shutil.rmtree()

Syntax: shutil.rmtree(cesta, ignore_errors=False, onerror=Žiadne)

Parametre:

    cesta: Objekt podobný ceste predstavujúci cestu k súboru. Objekt podobný ceste je buď reťazec alebo objekt typu bytes predstavujúci cestu. ignore_errors: Ak je hodnota ignore_errors true, chyby vyplývajúce z neúspešného odstránenia budú ignorované. onerror: Ak je hodnota ignore_errors nepravdivá alebo vynechaná, takéto chyby sa spracujú volaním obsluhy špecifikovanej parametrom onerror.

Odstráňte adresár a súbory v ňom obsiahnuté.

Príklad 1:

Predpokladajme, že adresár a podadresáre sú nasledovné.

# Nadradený adresár:

# Adresár v nadradenom adresári:

# Súbor v podadresári:

Príklad: Odstráňte všetky súbory z adresára

Chceme odstrániť adresár Autori. Nižšie je uvedená implementácia.

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)>

Výkon:

Príklad 2: Ignorujte chybu pri odstraňovaní adresára

Odovzdaní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ýkon:

Spätné sledovanie (posledný posledný hovor): Súbor D:/Pycharm projects/gfg/gfg.py, riadok 16, v Shutil.rmtree(cesta, ignore_errors=False) Súbor C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, riadok 730, v rmtree návrat _rmtree_unsafe(cesta, pri chybe) Súbor C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.pyshutil. , riadok 589, v _rmtree_unsafe onerror(os.scandir, cesta, sys.exc_info()) Súbor C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, riadok 586, v _rmtree_unsafe s os.scandir(cesta) ako scandir_it: FileNotFoundError: [WinError 3] Systém nemôže nájsť zadanú cestu: 'D:/Pycharm projects/techcodeview.com/Authors'

Príklad 3: Obsluha výnimky

V prípade chyby by mala byť odovzdaná funkcia, ktorá musí obsahovať tri parametre.

    funkcia – funkcia, ktorá vyvolala výnimku. cesta – prešiel názov cesty, ktorý vyvolal výnimku pri odstraňovaní excinfo – informácie o výnimke vyvolalo sys.exc_info()

Nižšie je uvedená implementácia

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ýkon:

Inside handler (, FileNotFoundError(2, ‘Systém nemôže nájsť zadanú cestu’), ) Inside handler (, FileNotFoundError(2, ‘Systém nemôže nájsť zadaný súbor’), )

Odstránenie súboru/adresára pomocou pathlib.Path(cesta_prázdneho_adresára).rmdir()

Prázdny adresár možno tiež odstrániť alebo vymazať pomocou metódy rmdir() modulu pathlib. Najprv musíme nastaviť cestu k adresáru a potom na tejto ceste zavoláme metódu rmdir()

Syntax atribútu pathlib.Path

Syntax: pathlib.Path(cesta_prázdneho_adresára).rmdir()

Parameter:

    empty_dir_path: Objekt podobný ceste predstavujúci prázdnu cestu k adresáru. Objekt podobný ceste je buď reťazec alebo objekt typu bytes predstavujúci cestu.

Typ návratu: Táto metóda nevracia žiadnu hodnotu.

Príklad: Odstráňte prázdny adresár pomocou rmdir()

V tomto príklade vymažeme prázdny priečinok, stačí zadať názov priečinka, ak je v koreňovom adresári

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ýkon:

Deleted 'Untitled Folder' successfully