Ștergeți un director sau un fișier folosind Python

Ștergeți un director sau un fișier folosind Python

În acest articol, vom aborda cum să ștergeți (eliminați) fișierele și directoarele în Python. Python oferă diferite metode și funcții pentru eliminarea fișierelor și directoarelor. Se poate elimina fișierul în funcție de nevoile lor.

Diverse metode oferite de Python sunt:

Ștergerea fișierului/dir-ului folosind metoda os.remove().

modul OS în Python oferă funcții pentru interacțiunea cu sistemul de operare. Toate funcțiile din modulul os cresc OSError în cazul numelor și căilor de fișiere invalide sau inaccesibile sau alte argumente care au tipul corect, dar care nu sunt acceptate de sistemul de operare.

metoda os.remove() în Python este folosit pentru a elimina sau șterge o cale de fișier. Aceasta metoda nu poate elimina sau șterge un director . Dacă calea specificată este un director, atunci OSError va fi generată de metodă.

Sintaxa lui os.remove()

Sintaxă: os.remove(cale, *, dir_fd = Nici unul)

Parametru: cale: Un obiect asemănător unei căi care reprezintă o cale de fișier. Un obiect asemănător căii este fie un șir, fie un obiect de octeți care reprezintă o cale.

    dir_fd (opțional): un descriptor de fișier care se referă la un director. Valoarea implicită a acestui parametru este Niciunul. Dacă calea specificată este absolută, dir_fd este ignorată.

Notă: „*” din lista de parametri indică faptul că toți parametrii următori (aici, în cazul nostru, „dir_fd”) sunt parametri numai cu cuvinte cheie și pot fi furnizați folosind numele lor, nu ca parametru de poziție.

Tip returnare: Această metodă nu returnează nicio valoare.

Exemplul 1: Ștergeți un fișier în Python

Să presupunem că fișierul conținut în folder este:

Dorim să ștergem fișierul 1 din folderul de mai sus. Mai jos este implementarea.

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

Ieșire:

Exemplul 2: Eliminați fișierul cu calea absolută

Dacă calea specificată este un director.

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>

Ieșire:

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' 

Exemplul 3: Verificați dacă fișierul există înainte de ștergere

Eroare de manipulare în timpul utilizării metodei 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'> )>

Ieșire:

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

Notă: Pentru a afla mai multe despre os.remove() faceți clic aici.

Ștergerea fișierului/dir-ului folosind metoda os.rmdir().

Metoda os.rmdir() în Python este folosită pentru a elimina sau șterge un director gol. OSError va fi ridicată dacă calea specificată nu este un director gol.

Sintaxa os.rmdir()

Sintaxă: os.rmdir(cale, *, dir_fd = Nici unul)

Parametru:

    cale: un obiect asemănător unei căi care reprezintă o cale de fișier. Un obiect asemănător căii este fie un șir, fie un obiect de octeți care reprezintă o cale. dir_fd (opțional): un descriptor de fișier care se referă la un director. Valoarea implicită a acestui parametru este Niciunul. Dacă calea specificată este absolută, dir_fd este ignorată.

Notă: „*” din lista de parametri indică faptul că toți parametrii următori (aici, în cazul nostru, „dir_fd”) sunt parametri numai cu cuvinte cheie și pot fi furnizați folosind numele lor, nu ca parametru de poziție.

Tip returnare: Această metodă nu returnează nicio valoare.

Exemplul 1: Ștergeți toate directoarele dintr-un Director

Să presupunem că directoarele sunt -

Vrem să eliminăm directorul Geeks. Mai jos este implementarea.

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

Ieșire:

Exemplul 2: Gestionarea erorilor la ștergerea unui director

Gestionarea erorilor în timpul utilizării metodei 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>

Ieșire:

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

Notă: Pentru a afla mai multe despre os.rmdir() faceți clic aici.

Ștergerea fișierului/dir-ului folosind shutil.rmtree()

shutil.rmtree() este folosit pentru a șterge un întreg arbore de directoare, o cale trebuie să indice către un director (dar nu o legătură simbolică către un director).

Sintaxa lui shutil.rmtree()

Sintaxă: shutil.rmtree(cale, ignore_errors=False, onerror=Niciuna)

Parametri:

    cale: un obiect asemănător unei căi care reprezintă o cale de fișier. Un obiect asemănător căii este fie un șir, fie un obiect de octeți care reprezintă o cale. ignore_errors: Dacă ignore_errors este adevărat, erorile rezultate din eliminări eșuate vor fi ignorate. onerror: Dacă ignore_errors este fals sau omis, astfel de erori sunt tratate apelând un handler specificat de onerror.

Ștergeți un director și fișierele conținute în acesta.

Exemplul 1:

Să presupunem că directorul și subdirectoarele sunt după cum urmează.

# Directorul Parinte:

# Director în interiorul directorului părinte:

# Fișier în interiorul subdirectorului:

Exemplu: Ștergeți toate fișierele dintr-un director

Dorim să eliminăm directorul Autori. Mai jos este implementarea.

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

Ieșire:

Exemplul 2: Ignorați eroarea la ștergerea unui director

Prin transmiterea 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>

Ieșire:

Traceback (cel mai recent apel ultimul): Fișier D:/Pycharm projects/gfg/gfg.py, linia 16, în shutil.rmtree(path, ignore_errors=False) Fișier C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, linia 730, în rmtree returnează _rmtree_unsafe(cale, onerror) Fișier C:UtilizatoriNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , linia 589, în _rmtree_unsafe onerror(os.scandir, path, sys.exc_info()) Fișier C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, linia 586, în _rmtree_unsafe cu os.scandir(cale) ca scandir_it: FileNotFoundError: [WinError 3] Sistemul nu poate găsi calea specificată: „D:/Pycharm projects/techcodeview.com/Authors”

Exemplul 3: gestionarea excepțiilor

În caz de eroare, trebuie transmisă o funcție care trebuie să conțină trei parametri.

    function – functie care a ridicat exceptia. cale – numele căii trecute care a ridicat excepția în timp ce se elimină excinfo – informații despre excepție ridicate de sys.exc_info()

Mai jos este implementarea

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

Ieșire:

Inside handler (, FileNotFoundError(2, ‘Sistemul nu poate găsi calea specificată’), ) Inside handler (, FileNotFoundError(2, ‘Sistemul nu poate găsi fișierul specificat’), )

Ștergerea fișierului/dir-ului folosind pathlib.Path(empty_dir_path).rmdir()

Un director gol poate fi, de asemenea, eliminat sau șters folosind metoda rmdir() a modulului pathlib. Mai întâi, trebuie să setăm calea pentru director și apoi apelăm metoda rmdir() pe acea cale

Sintaxa pathlib.Path

Sintaxă: pathlib.Path(empty_dir_path).rmdir()

Parametru:

    empty_dir_path: Un obiect asemănător unei căi care reprezintă o cale de director goală. Un obiect asemănător căii este fie un șir, fie un obiect de octeți care reprezintă o cale.

Tip returnare: Această metodă nu returnează nicio valoare.

Exemplu: ștergeți un director gol folosind rmdir()

În acest exemplu, vom șterge un folder gol, trebuie doar să specificăm numele folderului dacă se află în directorul rădăcină

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

Ieșire:

Deleted 'Untitled Folder' successfully