Python: verschil tussen os.remove() en os.unlink() en welke te gebruiken?

Ik heb een aantal bestanden in een map. Ik wil elk bestand verwijderen zodra het is verwerkt.

Wat is het verschil tussen het gebruik van os.remove()en os.unlink? Welke methode is ideaal voor mijn scenario?


Antwoord 1, autoriteit 100%

Ze zijn identiek zoals beschreven in de officiële Python 2.7.15-documentatie.

os.verwijderen(pad):

Verwijder (verwijder) het bestand pad. Als padeen directory is,
OSErroris verhoogd; zie rmdir()hieronder om een ​​map te verwijderen. Dit is
identiek aan de unlink()-functie
die hieronder wordt gedocumenteerd . Op Windows,
als u probeert een bestand te verwijderen dat in gebruik is, wordt een uitzondering
verhoogd; op Unix wordt de directoryvermelding verwijderd, maar de opslag
toegewezen aan het bestand wordt pas beschikbaar gemaakt als het originele bestand is
niet meer in gebruik.

Beschikbaarheid: Unix, Windows.

os.ontkoppelen(pad):

Verwijder (verwijder) het bestand pad. Dit is dezelfde functie als remove();
de unlink()-naam is de traditionele Unix-naam.

Beschikbaarheid: Unix, Windows.


Antwoord 2, autoriteit 15%

Bij gebruik van pathlib.Pathbestandstoegang in Python v3.4 en hoger

Hoewel de vraag specifiek vraagt ​​om het verwijderen van bestanden van de os-module, hebben de nieuwste versies van Python een andere optie voor het verwijderen van bestanden die een alternatief kan zijn.

Direct antwoord – gebruik pathlib.Path.unlink()

  • Opmerking: pathlib.Path.remove()bestaat niet

Als u de pathlib-modulegebruikt voor bestandstoegang, gebruikt u pathlib.Path.unlink()om bestanden te verwijderen.

De Path.unlink()methode is een vervanging voor zowel os.remove()als os.unlink(). Het wordt rechtstreeks uitgevoerd op een Pad-object, in plaats van dat de locatie van een bestand wordt doorgegeven via een tekenreeks-argument.

Meer details

Vanaf Python v3.4 is de ingebouwde module pathlibbeschikbaar om bestandstoegang op een objectgeoriënteerde manier af te handelen. Ik geloof dat er via Pip ook een apart pakket beschikbaar is voor oudere versies van Python.

Met pathlib maakt u map- en bestandsobjecten die van de klasse Pathzijn. De gerelateerde methode voor het verwijderen van een bestand is samengevoegd tot slechts unlink(). Ze hebben geen methode remove()(waarschijnlijk omdat er, volgens het antwoord van shash678, geen verschil is, het is slechts een alias). Dit lijkt equivalent te zijn aan de osmethoden voor het verwijderen van bestanden, behalve de onderliggende manier om het bestand zelf te specificeren.

Zie Objectgeoriënteerde bestandssysteempaden, samen met de tabel aan de onderaan die zowel os.remove()als os.unlink()map to Path.unlink()laat zien.

In Python v3.8 is een argument missing_oktoegevoegd aan de functie Path.unlink(). Wanneer *missing_ok* == True, wordt er geen uitzondering gegenereerd als het bestand niet bestaat voordat u het probeert te verwijderen.

Other episodes