Verwijder een map of bestand met Python

Verwijder een map of bestand met Python

In dit artikel bespreken we hoe u bestanden en mappen in Python kunt verwijderen (verwijderen). Python biedt verschillende methoden en functies voor het verwijderen van bestanden en mappen. Men kan het bestand naar behoefte verwijderen.

Verschillende methoden van Python zijn:

Bestand/map verwijderen met de methode os.remove().

OS-module in Python biedt functies voor interactie met het besturingssysteem. Alle functies in de os-module verhogen OSFout in het geval van ongeldige of ontoegankelijke bestandsnamen en paden, of andere argumenten die het juiste type hebben maar niet door het besturingssysteem worden geaccepteerd.

os.remove() methode in Python wordt gebruikt om een ​​bestandspad te verwijderen of te verwijderen. Deze methode kan een map niet verwijderen of verwijderen . Als het opgegeven pad een map is, wordt OSError door de methode gegenereerd.

Syntaxis van os.remove()

Syntaxis: os.remove(pad, *, dir_fd = Geen)

Parameter: pad: Een padachtig object dat een bestandspad vertegenwoordigt. Een padachtig object is een string- of bytesobject dat een pad vertegenwoordigt.

    dir_fd (optioneel): een bestandsdescriptor die verwijst naar een map. De standaardwaarde van deze parameter is Geen. Als het opgegeven pad absoluut is, wordt dir_fd genegeerd.

Opmerking: De ‘*’ in de parameterlijst geeft aan dat alle volgende parameters (hier in ons geval ‘dir_fd’) alleen trefwoordparameters zijn en dat ze kunnen worden opgegeven met behulp van hun naam, niet als positionele parameter.

Retourtype: Deze methode retourneert geen enkele waarde.

Voorbeeld 1: verwijder een bestand in Python

Stel dat het bestand in de map het volgende is:

We willen bestand1 uit de bovenstaande map verwijderen. Hieronder vindt u de implementatie.

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

Uitgang:

Voorbeeld 2: Bestand met absoluut pad verwijderen

Als het opgegeven pad een map is.

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>

Uitgang:

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' 

Voorbeeld 3: Controleer of het bestand bestaat voordat u het verwijdert

Foutafhandeling tijdens het gebruik van de methode 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'> )>

Uitgang:

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

Opmerking: Klik hier voor meer informatie over os.remove().

Bestand/map verwijderen met behulp van de os.rmdir() methode

os.rmdir() methode in Python wordt gebruikt om een ​​lege map te verwijderen of te verwijderen. OSFout wordt weergegeven als het opgegeven pad geen lege map is.

Syntaxis van os.rmdir()

Syntaxis: os.rmdir(pad, *, dir_fd = Geen)

Parameter:

    pad: een padachtig object dat een bestandspad vertegenwoordigt. Een padachtig object is een string- of bytesobject dat een pad vertegenwoordigt. dir_fd (optioneel): een bestandsdescriptor die verwijst naar een map. De standaardwaarde van deze parameter is Geen. Als het opgegeven pad absoluut is, wordt dir_fd genegeerd.

Opmerking: De ‘*’ in de parameterlijst geeft aan dat alle volgende parameters (hier in ons geval ‘dir_fd’) alleen trefwoordparameters zijn en dat ze kunnen worden opgegeven met behulp van hun naam, niet als positionele parameter.

Retourtype: Deze methode retourneert geen enkele waarde.

Voorbeeld 1: Verwijder alle mappen uit een map

Stel dat de mappen zijn:

We willen de map Geeks verwijderen. Hieronder vindt u de implementatie.

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

Uitgang:

Voorbeeld 2: Foutafhandeling tijdens het verwijderen van een map

Omgaan met fouten tijdens het gebruik van de os.rmdir()-methode,

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>

Uitgang:

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

Opmerking: Klik hier voor meer informatie over os.rmdir().

Bestand/map verwijderen met behulp van shutil.rmtree()

shutil.rmtree() wordt gebruikt om een ​​volledige directorystructuur te verwijderen, een pad moet naar een directory verwijzen (maar geen symbolische link naar een directory).

Syntaxis van shutil.rmtree()

Syntaxis: shutil.rmtree(pad, negeer_errors=False, onerror=Geen)

Parameters:

    pad: een padachtig object dat een bestandspad vertegenwoordigt. Een padachtig object is een string- of bytesobject dat een pad vertegenwoordigt. negeer_errors: Als negeer_errors waar is, worden fouten die voortvloeien uit mislukte verwijderingen genegeerd. onerror: Als negeer_errors false is of wordt weggelaten, worden dergelijke fouten afgehandeld door een handler aan te roepen die is opgegeven door onerror.

Verwijder een map en de bestanden daarin.

Voorbeeld 1:

Stel dat de map en submappen er als volgt uitzien.

# Bovenliggende map:

# Directory binnen de bovenliggende map:

# Bestand in de submap:

Voorbeeld: verwijder alle bestanden uit een map

We willen de map Auteurs verwijderen. Hieronder vindt u de implementatie.

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

Uitgang:

Voorbeeld 2: Fout negeren tijdens het verwijderen van een map

Door negeer_errors = True door te geven.

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>

Uitgang:

Traceback (meest recente oproep als laatste): Bestand D:/Pycharm projects/gfg/gfg.py, regel 16, in shutil.rmtree (pad, negeer_errors=False) Bestand C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, regel 730, in rmtree return _rmtree_unsafe(path, onerror) Bestand C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , regel 589, in _rmtree_unsafe onerror(os.scandir, path, sys.exc_info()) Bestand C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, regel 586, in _rmtree_unsafe met os.scandir(path) als scandir_it: FileNotFoundError: [WinError 3] Het systeem kan het opgegeven pad niet vinden: 'D:/Pycharm projects/techcodeview.com/Authors'

Voorbeeld 3: Uitzonderingshandler

Bij één fout moet een functie worden doorgegeven die drie parameters moet bevatten.

    functie – functie die de uitzondering veroorzaakte. pad – padnaam doorgegeven waardoor de uitzondering ontstond tijdens het verwijderen excinfo – uitzonderingsinformatie gegenereerd door sys.exc_info()

Hieronder vindt u de implementatie

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

Uitgang:

Inside handler (, FileNotFoundError(2, ‘Het systeem kan het opgegeven pad niet vinden’), ) Inside handler (, FileNotFoundError(2, ‘Het systeem kan het opgegeven bestand niet vinden’), )

Bestand/map verwijderen met behulp van pathlib.Path(empty_dir_path).rmdir()

Een lege map kan ook worden verwijderd of verwijderd met behulp van de rmdir() -methode van de pathlib-module. Eerst moeten we het pad voor de map instellen en vervolgens roepen we de methode rmdir() op dat pad aan

Syntaxis van pathlib.Path

Syntaxis: pathlib.Path(lege_map_pad).rmdir()

Parameter:

    empty_dir_path: Een padachtig object dat een leeg mappad vertegenwoordigt. Een padachtig object is een string- of bytesobject dat een pad vertegenwoordigt.

Retourtype: Deze methode retourneert geen enkele waarde.

Voorbeeld: verwijder een lege map met rmdir()

In dit voorbeeld verwijderen we een lege map. We hoeven alleen de mapnaam op te geven als deze zich in de hoofdmap bevindt

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

Uitgang:

Deleted 'Untitled Folder' successfully