Ik heb scripts die andere scriptbestanden aanroepen, maar ik moet het bestandspad krijgen van het bestand dat momenteel in het proces wordt uitgevoerd.
Bijvoorbeeld, laten we zeggen dat ik drie bestanden heb. Met behulp van execfile:
script_1.py
roept script_2.py
aan.script_2.py
script_3.py
aan.Hoe kan ik de bestandsnaam en het pad van script_3.py
, van code binnen script_3.py
krijgen, zonder dat ik die informatie als argumenten van script_2.py
moet doorgeven?
(Het uitvoeren van os.getcwd()
geeft het oorspronkelijke start script's bestandspad terug, niet het huidige bestand's).
Het is niet helemaal duidelijk wat je bedoelt met "the filepath of the file that is currently running within the process".
sys.argv[0]
bevat meestal de locatie van het script dat is aangeroepen door de Python-interpreter.
Zie de sys documentatie voor meer details.
Zoals @Tim en @Pat Notz hebben aangegeven, geeft het attribuut _file_ toegang tot
het bestand van waaruit de module was geladen is, als het geladen is vanuit een bestand
Het __file__
attribuut werkt zowel voor het bestand met de hoofduitvoeringscode als voor geïmporteerde modules.
Zie https://web.archive.org/web/20090918095828/http://pyref.infogami.com/__file__
Ik denk dat het gewoon __file__
is. Het klinkt alsof je misschien ook de inspect module wilt bekijken.