Slett en katalog eller fil ved hjelp av Python

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 -

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