Izbrišite imenik ali datoteko s Pythonom

Izbrišite imenik ali datoteko s Pythonom

V tem članku bomo opisali, kako izbrisati (odstraniti) datoteke in imenike v Pythonu. Python ponuja različne metode in funkcije za odstranjevanje datotek in imenikov. Datoteko lahko odstranite glede na svoje potrebe.

Različne metode, ki jih ponuja Python, so –

Brisanje datoteke/imenika z metodo os.remove().

OS modul v Pythonu ponuja funkcije za interakcijo z operacijskim sistemom. Vse funkcije v modulu os dvignejo OSError v primeru neveljavnih ali nedostopnih imen in poti datotek ali drugih argumentov, ki imajo pravilno vrsto, vendar jih operacijski sistem ne sprejema.

metoda os.remove() v Pythonu se uporablja za odstranitev ali brisanje poti datoteke. Ta metoda ne more odstraniti ali izbrisati imenika . Če je podana pot imenik, bo metoda sprožila OSError.

Sintaksa os.remove()

Sintaksa: os.remove(pot, *, dir_fd = Brez)

Parameter: pot: Poti podoben objekt, ki predstavlja pot do datoteke. Objekt, podoben poti, je objekt niza ali bajtov, ki predstavlja pot.

    dir_fd (neobvezno): deskriptor datoteke, ki se nanaša na imenik. Privzeta vrednost tega parametra je Brez. Če je podana pot absolutna, je dir_fd prezrt.

Opomba: »*« na seznamu parametrov pomeni, da so vsi naslednji parametri (v našem primeru »dir_fd«) parametri samo s ključnimi besedami in jih je mogoče navesti z uporabo njihovega imena, ne kot pozicijski parameter.

Vrsta vračila: Ta metoda ne vrne nobene vrednosti.

Primer 1: Brisanje datoteke v Pythonu

Recimo, da je datoteka v mapi:

Datoteko1 želimo izbrisati iz zgornje mape. Spodaj je izvedba.

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

Izhod:

Primer 2: Odstranite datoteko z absolutno potjo

Če je navedena pot imenik.

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>

Izhod:

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' 

Primer 3: Pred brisanjem preverite, ali datoteka obstaja

Napaka pri obravnavi med uporabo metode 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'> )>

Izhod:

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

Opomba: Če želite izvedeti več o os.remove(), kliknite tukaj.

Brisanje datoteke/dir z metodo os.rmdir().

Metoda os.rmdir() v Pythonu se uporablja za odstranitev ali brisanje praznega imenika. OSError se dvigne, če podana pot ni prazen imenik.

Sintaksa os.rmdir()

Sintaksa: os.rmdir(pot, *, dir_fd = Brez)

Parameter:

    pot: predmet, podoben poti, ki predstavlja pot do datoteke. Objekt, podoben poti, je objekt niza ali bajtov, ki predstavlja pot. dir_fd (neobvezno): deskriptor datoteke, ki se nanaša na imenik. Privzeta vrednost tega parametra je Brez. Če je navedena pot absolutna, je dir_fd prezrt.

Opomba: »*« na seznamu parametrov pomeni, da so vsi naslednji parametri (v našem primeru »dir_fd«) parametri samo s ključnimi besedami in jih je mogoče navesti z uporabo njihovega imena, ne kot pozicijski parameter.

Vrsta vračila: Ta metoda ne vrne nobene vrednosti.

Primer 1: Izbrišite vse imenike iz imenika

Recimo, da so imeniki –

Želimo odstraniti imenik Geeks. Spodaj je izvedba.

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

Izhod:

Primer 2: Odpravljanje napak med brisanjem imenika

Obravnava napak med uporabo metode 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>

Izhod:

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

Opomba: Če želite izvedeti več o os.rmdir(), kliknite tukaj.

Brisanje datoteke/dir z uporabo shutil.rmtree()

shutil.rmtree() se uporablja za brisanje celotnega drevesa imenikov, pot mora kazati na imenik (vendar ne simbolična povezava do imenika).

Sintaksa shutil.rmtree()

Sintaksa: shutil.rmtree(path, ignore_errors=False, onerror=None)

Parametri:

    pot: poti podoben objekt, ki predstavlja pot do datoteke. Objekt, podoben poti, je objekt niza ali bajtov, ki predstavlja pot. ignore_errors: Če je ignore_errors nastavljen na true, bodo napake, ki so posledica neuspešnih odstranitev, prezrte. onerror: Če je ignore_errors false ali izpuščen, se takšne napake obravnavajo s klicem obdelovalca, ki ga določa onerror.

Izbrišite imenik in datoteke v njem.

Primer 1:

Recimo, da so imenik in podimeniki naslednji.

# Nadrejeni imenik:

# Imenik znotraj nadrejenega imenika:

# Datoteka znotraj podimenika:

Primer: Izbrišite vse datoteke iz imenika

Odstraniti želimo imenik Avtorji. Spodaj je izvedba.

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

Izhod:

Primer 2: Prezri napako med brisanjem imenika

S posredovanjem 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>

Izhod:

Traceback (zadnji zadnji klic): datoteka D:/Pycharm projects/gfg/gfg.py, vrstica 16, v shutil.rmtree(path, ignore_errors=False) datoteka C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, vrstica 730, v rmtree vrne _rmtree_unsafe(path, onerror) Datoteka C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , vrstica 589, v _rmtree_unsafe onerror(os.scandir, path, sys.exc_info()) Datoteka C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, vrstica 586, v _rmtree_unsafe z os.scandir(path) kot scandir_it: FileNotFoundError: [WinError 3] Sistem ne najde navedene poti: 'D:/Pycharm projects/techcodeview.com/Authors'

Primer 3: Obravnavalec izjem

V onerror je treba posredovati funkcijo, ki mora vsebovati tri parametre.

    funkcija – funkcija, ki je povzročila izjemo. pot – posredovano ime poti, ki je sprožilo izjemo med odstranitvijo excinfo – informacije o izjemi, ki jih sproži sys.exc_info()

Spodaj je izvedba

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

Izhod:

Notranja obravnava (, FileNotFoundError(2, 'Sistem ne najde podane poti'), ) Notranja obravnava (, FileNotFoundError(2, 'Sistem ne najde podane datoteke'), )

Brisanje datoteke/imenika z uporabo pathlib.Path(empty_dir_path).rmdir()

Prazen imenik lahko tudi odstranite ali izbrišete z uporabo metode rmdir() modula pathlib. Najprej moramo nastaviti pot za imenik, nato pa na tej poti pokličemo metodo rmdir().

Sintaksa pathlib.Path

Sintaksa: pathlib.Path(empty_dir_path).rmdir()

Parameter:

    empty_dir_path: poti podoben objekt, ki predstavlja pot do praznega imenika. Objekt, podoben poti, je objekt niza ali bajtov, ki predstavlja pot.

Vrsta vračila: Ta metoda ne vrne nobene vrednosti.

Primer: brisanje praznega imenika z rmdir()

V tem primeru bomo izbrisali prazno mapo, le ime mape moramo določiti, če je v korenskem imeniku

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

Izhod:

Deleted 'Untitled Folder' successfully