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 –
- Uporaba os.remove()
- Uporaba os.rmdir()
- Uporaba shutil.rmtree()
- Uporaba pathlib.Path(empty_dir_path).rmdir()
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