Ištrinkite katalogą arba failą naudodami Python
Šiame straipsnyje apžvelgsime, kaip ištrinti (pašalinti) failus ir katalogus Python. Python siūlo skirtingus metodus ir funkcijas failams ir katalogams pašalinti. Failą galima pašalinti pagal poreikį.
Įvairūs Python siūlomi metodai yra:
- Naudojant os.remove()
- Naudojant os.rmdir()
- Naudojant shutil.rmtree()
- Naudojant pathlib.Path(empty_dir_path).rmdir()
Failo / katalogo ištrynimas naudojant os.remove() metodą
OS modulis Python teikia funkcijas, skirtas sąveikai su operacine sistema. Visos OS modulio funkcijos pakeliamos OSE klaida netinkamų ar nepasiekiamų failų pavadinimų ir kelių ar kitų argumentų, kurių tipas yra teisingas, bet kurių operacinė sistema nepriima, atveju.
os.remove() metodas Python naudojamas failo keliui pašalinti arba ištrinti. Šis metodas negali pašalinti arba ištrinti katalogo . Jei nurodytas kelias yra katalogas, metodu bus iškelta OSError.
os.remove() sintaksė
Sintaksė: os.remove(path, *, dir_fd = Nėra)
Parametras: kelias: Į kelią panašus objektas, vaizduojantis failo kelią. Į kelią panašus objektas yra eilutė arba baitų objektas, vaizduojantis kelią.
dir_fd (pasirenkama): failo deskriptorius, nurodantis katalogą. Numatytoji šio parametro reikšmė yra None. Jei nurodytas kelias yra absoliutus, dir_fd nepaisoma.
Pastaba: „*“ parametrų sąraše rodo, kad visi šie parametrai (mūsų atveju „dir_fd“) yra tik raktinių žodžių parametrai ir jie gali būti pateikti naudojant jų pavadinimą, o ne kaip padėties parametrą.
Grąžinimo tipas: Šis metodas negrąžina jokios vertės.
1 pavyzdys: ištrinkite failą Python
Tarkime, aplanke esantis failas yra:
Norime ištrinti failą1 iš aukščiau esančio aplanko. Žemiau pateikiamas įgyvendinimas.
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)> |
Išvestis:
2 pavyzdys: pašalinkite failą su absoliučiu keliu
Jei nurodytas kelias yra katalogas.
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> |
Išvestis:
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'
3 pavyzdys: Prieš ištrindami patikrinkite, ar failas yra
Apdorojimo klaida naudojant os.remove() metodą.
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'> )> |
Išvestis:
[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed
Pastaba: Norėdami sužinoti daugiau apie os.remove(), spustelėkite čia.
Failo / katalogo ištrynimas naudojant os.rmdir() metodą
Python metodas os.rmdir() naudojamas tuščiam katalogui pašalinti arba ištrinti. OSE klaida bus iškeltas, jei nurodytas kelias nėra tuščias katalogas.
os.rmdir() sintaksė
Sintaksė: os.rmdir(kelias, *, dir_fd = Nėra)
Parametras:
kelias: į kelią panašus objektas, vaizduojantis failo kelią. Į kelią panašus objektas yra eilutė arba baitų objektas, vaizduojantis kelią. dir_fd (pasirenkama): failo deskriptorius, nurodantis katalogą. Numatytoji šio parametro reikšmė yra None. Jei nurodytas kelias yra absoliutus, dir_fd nepaisoma.
Pastaba: „*“ parametrų sąraše rodo, kad visi šie parametrai (mūsų atveju „dir_fd“) yra tik raktinių žodžių parametrai ir jie gali būti pateikti naudojant jų pavadinimą, o ne kaip padėties parametrą.
Grąžinimo tipas: Šis metodas negrąžina jokios vertės.
1 pavyzdys: Ištrinkite visus katalogus iš katalogo
Tarkime, katalogai yra -
Norime pašalinti katalogą Geeks. Žemiau pateikiamas įgyvendinimas.
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)> |
Išvestis:
2 pavyzdys: klaidų tvarkymas ištrinant katalogą
Klaidų tvarkymas naudojant os.rmdir() metodą,
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> |
Išvestis:
[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed
Pastaba: Norėdami sužinoti daugiau apie os.rmdir() spustelėkite čia.
Failo / katalogo ištrynimas naudojant shutil.rmtree()
shutil.rmtree() naudojamas visam katalogų medžiui ištrinti, kelias turi nukreipti į katalogą (bet ne simbolinė nuoroda į katalogą).
Shutil.rmtree() sintaksė
Sintaksė: shutil.rmtree(path, ignore_errors=Klaidinga, onerror=Nėra)
Parametrai:
kelias: į kelią panašus objektas, vaizduojantis failo kelią. Į kelią panašus objektas yra eilutė arba baitų objektas, vaizduojantis kelią. ignore_errors: jei ignore_errors yra tiesa, klaidos, atsiradusios dėl nesėkmingo pašalinimo, bus ignoruojamos. onror: Jei ignore_errors yra klaidingas arba praleistas, tokios klaidos tvarkomos iškviečiant onror nurodytą tvarkyklę.
Ištrinkite katalogą ir jame esančius failus.
1 pavyzdys:
Tarkime, kad katalogas ir pakatalogiai yra tokie.
# Pirminis katalogas:
# Katalogas pirminiame kataloge:
# Failas pakatalogio viduje:
Pavyzdys: Ištrinkite visus failus iš katalogo
Norime pašalinti katalogą Autoriai. Žemiau pateikiamas įgyvendinimas.
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)> |
Išvestis:
2 pavyzdys: Ignoruokite klaidą ištrindami katalogą
Perdavus 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> |
Išvestis:
Traceback (paskutinis skambutis): Failas D:/Pycharm projects/gfg/gfg.py, 16 eilutė, shutil.rmtree(path, ignore_errors=False) Failas C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, 730 eilutė, rmtree grąžina _rmtree_unsafe(kelias, klaida) Failas C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32pylibshutil. , 589 eilutė, _rmtree_unsafe onror(os.scandir, path, sys.exc_info()) Failas C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, 586 eilutė, _rmtree_unsafe su os.scandir(path) kaip scandir_it: FileNotFoundError: [WinError 3] Sistema negali rasti nurodyto kelio: 'D:/Pycharm projects/techcodeview.com/Authors'
3 pavyzdys: Išimčių tvarkytojas
Vienos klaidos atveju turi būti perduota funkcija, kurią turi sudaryti trys parametrai.
- funkcija – funkcija, kuri iškėlė išimtį. kelias – kelio pavadinimas perduotas, dėl kurio pašalinimo metu atsirado išimtis excinfo – išimties informacija, kurią pateikė sys.exc_info()
Žemiau pateikiamas įgyvendinimas
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)> |
Išvestis:
Vidinė tvarkyklė (, FileNotFoundError(2, 'Sistema neranda nurodyto kelio'), ) Vidinė tvarkyklė (, FileNotFoundError(2, 'Sistema negali rasti nurodyto failo), )
Failo / katalogo ištrynimas naudojant pathlib.Path(empty_dir_path).rmdir()
Tuščią katalogą taip pat galima pašalinti arba ištrinti naudojant modulio pathlib metodą rmdir (). Pirmiausia turime nustatyti katalogo kelią, o tada tame kelyje iškviečiame metodą rmdir()
Sintaksė pathlib.Path
Sintaksė: pathlib.Path(empty_dir_path).rmdir()
Parametras:
empty_dir_path: į kelią panašus objektas, vaizduojantis tuščią katalogo kelią. Į kelią panašus objektas yra eilutė arba baitų objektas, vaizduojantis kelią.
Grąžinimo tipas: Šis metodas negrąžina jokios vertės.
Pavyzdys: ištrinkite tuščią katalogą naudodami rmdir()
Šiame pavyzdyje ištrinsime tuščią aplanką, tereikia nurodyti aplanko pavadinimą, jei jis yra šakniniame kataloge
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)> |
Išvestis:
Deleted 'Untitled Folder' successfully