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 –
- Použitie os.remove()
- Použitie os.rmdir()
- Použitie funkcie Shutil.rmtree()
- Použitie pathlib.Path(prázdny_adresár_cesta).rmdir()
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