Slett en katalog eller fil ved hjelp av Python
I denne artikkelen vil vi dekke hvordan du sletter (fjerner) filer og kataloger i Python. Python tilbyr forskjellige metoder og funksjoner for å fjerne filer og kataloger. Man kan fjerne filen i henhold til deres behov.
Ulike metoder levert av Python er -
- Bruke os.remove()
- Bruker os.rmdir()
- Bruker shutil.rmtree()
- Bruker pathlib.Path(empty_dir_path).rmdir()
Sletter fil/katalog ved hjelp av os.remove()-metoden
OS-modul i Python gir funksjoner for samhandling med operativsystemet. Alle funksjoner i os-modulen heves OSFeil i tilfelle ugyldige eller utilgjengelige filnavn og stier, eller andre argumenter som har riktig type, men som ikke aksepteres av operativsystemet.
os.remove()-metoden i Python brukes til å fjerne eller slette en filbane. Denne metoden kan ikke fjerne eller slette en katalog . Hvis den angitte banen er en katalog, vil OSError økes av metoden.
Syntaks for os.remove()
Syntaks: os.remove(bane, *, dir_fd = Ingen)
Parameter: sti: Et banelignende objekt som representerer en filbane. Et banelignende objekt er enten et streng- eller byteobjekt som representerer en bane.
dir_fd (valgfritt): En filbeskrivelse som refererer til en katalog. Standardverdien for denne parameteren er Ingen. Hvis den angitte banen er absolutt, ignoreres dir_fd.
Merk: '*' i parameterlisten indikerer at alle følgende parametere (her i vårt tilfelle 'dir_fd') er nøkkelordparametere, og de kan angis ved å bruke navnet deres, ikke som posisjonsparameter.
Returtype: Denne metoden returnerer ingen verdi.
Eksempel 1: Slett en fil i Python
Anta at filen i mappen er:
Vi ønsker å slette fil1 fra mappen ovenfor. Nedenfor er gjennomføringen.
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)> |
Produksjon:
Eksempel 2: Fjern fil med absolutt bane
Hvis den angitte banen er en katalog.
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> |
Produksjon:
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'
Eksempel 3: Sjekk om filen eksisterer før du sletter
Håndtering av feil under bruk av os.remove()-metoden.
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'> )> |
Produksjon:
[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed
Merk: For å vite mer om os.remove() klikk her .
Sletter fil/dir ved hjelp av os.rmdir()-metoden
os.rmdir()-metoden i Python brukes til å fjerne eller slette en tom katalog. OSFeil vil bli hevet hvis den angitte banen ikke er en tom katalog.
Syntaks for os.rmdir()
Syntaks: os.rmdir(bane, *, dir_fd = Ingen)
Parameter:
bane: Et banelignende objekt som representerer en filbane. Et banelignende objekt er enten et streng- eller byteobjekt som representerer en bane. dir_fd (valgfritt): En filbeskrivelse som refererer til en katalog. Standardverdien for denne parameteren er Ingen. Hvis den angitte banen er absolutt, ignoreres dir_fd.
Merk: '*' i parameterlisten indikerer at alle følgende parametere (her i vårt tilfelle 'dir_fd') er nøkkelordparametere, og de kan angis ved å bruke navnet deres, ikke som posisjonsparameter.
Returtype: Denne metoden returnerer ingen verdi.
Eksempel 1: Slett alle kataloger fra en katalog
Anta at katalogene er -
Vi ønsker å fjerne katalogen Geeks. Nedenfor er gjennomføringen.
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)> |
Produksjon:
Eksempel 2: Feilhåndtering under sletting av en katalog
Håndtering av feil mens du bruker os.rmdir()-metoden,
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> |
Produksjon:
[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed
Merk: For å vite mer om os.rmdir() klikk her .
Sletter fil/katalog ved hjelp av shutil.rmtree()
shutil.rmtree() brukes til å slette et helt katalogtre, en sti må peke til en katalog (men ikke en symbolsk lenke til en katalog).
Syntaks for shutil.rmtree()
Syntaks: shutil.rmtree(bane, ignore_errors=False, onerror=Ingen)
Parametere:
bane: Et banelignende objekt som representerer en filbane. Et banelignende objekt er enten et streng- eller byteobjekt som representerer en bane. ignore_errors: Hvis ignore_errors er sant, vil feil som følge av mislykkede fjerninger bli ignorert. onerror: Hvis ignore_errors er falsk eller utelatt, håndteres slike feil ved å kalle en behandler spesifisert av onerror.
Slett en katalog og filene i den.
Eksempel 1:
Anta at katalogen og underkatalogene er som følger.
# Overordnet katalog:
# Katalog i overordnet katalog:
# Fil i underkatalogen:
Eksempel: Slett alle filer fra en katalog
Vi ønsker å fjerne katalogen Forfattere. Nedenfor er gjennomføringen.
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)> |
Produksjon:
Eksempel 2: Ignorer feil under sletting av en katalog
Ved å sende 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> |
Produksjon:
Traceback (siste anrop sist): Fil D:/Pycharm projects/gfg/gfg.py, linje 16, i shutil.rmtree(path, ignore_errors=False) Fil C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, linje 730, i rmtree return _rmtree_unsafe(path, onerror) Fil C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , linje 589, i _rmtree_unsafe onerror(os.scandir, bane, sys.exc_info()) Fil C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, linje 586, i _rmtree_unsafe med os.scandir(path) som scandir_it: FileNotFoundError: [WinError 3] Systemet finner ikke stien som er spesifisert: 'D:/Pycharm projects/techcodeview.com/Authors'
Eksempel 3: Unntaksbehandler
Ved en feil skal det sendes en funksjon som må inneholde tre parametere.
- funksjon – funksjon som reiste unntaket. bane – banenavn bestått som utløste unntaket mens fjerning excinfo – unntaksinfo hevet av sys.exc_info()
Nedenfor er gjennomføringen
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)> |
Produksjon:
Inside handler (, FileNotFoundError(2, ‘Systemet kan ikke finne den angitte banen’), ) Inside handler (, FileNotFoundError(2, ‘Systemet finner ikke filen spesifisert’), )
Sletter fil/katalog ved å bruke pathlib.Path(empty_dir_path).rmdir()
En tom katalog kan også fjernes eller slettes ved å bruke pathlib-modulens rmdir()-metode. Først må vi angi banen for katalogen, og deretter kaller vi rmdir()-metoden på den banen
Syntaks for pathlib.Path
Syntaks: pathlib.Path(empty_dir_path).rmdir()
Parameter:
empty_dir_path: Et banelignende objekt som representerer en tom katalogbane. Et banelignende objekt er enten et streng- eller byteobjekt som representerer en bane.
Returtype: Denne metoden returnerer ingen verdi.
Eksempel: Slett en tom katalog med rmdir()
I dette eksemplet vil vi slette en tom mappe, vi trenger bare å spesifisere mappenavnet hvis det er i rotkatalogen
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)> |
Produksjon:
Deleted 'Untitled Folder' successfully