logo

Haal de huidige map op in Python

In dit artikel bespreken we hoe u de werkmap in Python kunt ophalen en wijzigen. Tijdens het werken met Bestandsbehandeling het is je misschien opgevallen dat er alleen naar bestanden wordt verwezen met hun naam, b.v. ‘GFG.txt’ en als het bestand zich niet in de directory van het script bevindt, geeft Python een foutmelding. Het concept van de Huidige werkmap (CWD) wordt hier belangrijk. Beschouw de CWD als de map waarin de Python werkt. Telkens wanneer de bestanden alleen met hun naam worden aangeroepen, gaat Python ervan uit dat deze in de CWD beginnen, wat betekent dat een verwijzing naar alleen de naam alleen succesvol zal zijn als het bestand zich in de CWD van Python bevindt.

Opmerking: De map waarin het Python-script wordt uitgevoerd, staat bekend als de huidige map. Dit is mogelijk niet het pad waar het Python-script zich bevindt.



Wat is de Python os-module?

Python biedt een os-module voor interactie met het besturingssysteem. Deze module valt onder de standaard hulpprogrammamodule van Python. 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.

Python Zoek huidige map

Haal een map op met het huidige Python-script met sys.argv[0]

In dit voorbeeld hebben we gebruikt sys.argv[0] om het pad van het scriptbestand op te halen en os.pad.mapnaam() extraheert de huidige map uit het pad.

Python3








import> os> import> sys> script_directory>=> os.path.dirname(os.path.abspath(sys.argv[>0>]))> print>(script_directory)>

>

>

Uitgang:

Haal de map met het huidige Python-script op

Haal een map op met het huidige Python-script

Haal de directory van het huidige Python-script op met behulp van de Inspect-module

In dit voorbeeld hebben we gebruikt inspecteer.getfile(inspecteer.currentframe()) wat het pad van het huidige scriptbestand retourneert, en os.pad.mapnaam() extraheert de huidige map uit het pad.

Python3




import> inspect> import> os> script_directory>=> os.path.dirname(os.path.abspath(> >inspect.getfile(inspect.currentframe())))> > print>(script_directory)>

>

>

Uitgang:

Java-invoer
Haal de map met het huidige Python-script op

Haal de map met het huidige Python-script op

Haal de huidige werkmap op met os.getcwd()

In dit voorbeeld hebben we gebruikt os.getcwd() om de huidige directory van het Python-script op te halen.

Python3




import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())>

>

>

Uitgang:

File location using os.getcwd(): /home/tuhingfg/Documents/Scripts>

Opmerking: Gebruik makend van os.getcwd() werkt niet zoals verwacht bij het uitvoeren van de Python-code vanuit een andere map dan het Python-script.

Onverwacht resultaat bij het uitvoeren van Python-script vanuit een andere map dan script met os.getcwd()

Het Python-script wordt erin geplaatst /home/tuhingfg/Documenten/Scripts . Wanneer we het script vanuit dezelfde map uitvoeren, wordt de juiste scriptlocatie weergegeven. Maar wanneer we onze map naar een andere plaats wijzigen, wordt de locatie van die map weergegeven. Dit is zo omdat os.getcwd() houdt rekening met de map van waaruit we het script uitvoeren. Op basis hiervan is het resultaat van os.getcwd() varieert ook.

Python3




import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())>

>

>

Uitgang:

Scriptlocatie ophalen met os.getcwd()

Scriptlocatie ophalen met os.getcwd()

Haal de Python Script-locatie op met de methode os.path.realpath().

os.path.realpath() kan worden gebruikt om het pad van het huidige Python-script op te halen. Eigenlijk wordt de methode os.path.realpath() in Python gebruikt om het canonieke pad van de opgegeven bestandsnaam te verkrijgen door alle symbolische links die in het pad voorkomen te elimineren. Een bijzondere variabele __bestand__ wordt doorgegeven aan de echtpad() methode om het pad van het Python-script op te halen.

In dit voorbeeld is de os.getcwd() En __bestand__ twee verschillende resultaten opleveren. Omdat we het script vanuit een andere map uitvoeren dan het script, os.getcwd() de uitvoer is gewijzigd afhankelijk van de map waarin het script wordt uitgevoerd. Maar __bestand__ genereert het constante resultaat, ongeacht de huidige werkmap.

Python3




import> os> > print>(>'File location using os.getcwd():'>,> >os.getcwd())> > print>(f>'File location using __file__ variable:'>+> >'{os.path.realpath(os.path.dirname(__file__))}'>)>

>

geschiedenis op Java
>

Uitgang:

Haal directory van Python op

Haal een map op met Python

Opmerking: __bestand__ is de padnaam van het bestand waaruit de module is geladen als deze vanuit een bestand is geladen.