J'ai des scripts qui appellent d'autres fichiers de script, mais j'ai besoin d'obtenir le chemin du fichier en cours d'exécution dans le processus.
Par exemple, disons que j'ai trois fichiers. En utilisant execfile :
script_1.py
appelle le fichier script_2.py
.script_2.py
appelle script_3.py
.Comment puis-je obtenir le nom de fichier et le chemin d'accès de *script_3.py
, à partir du code dans script_3.py
, sans avoir à passer ces informations comme arguments depuis script_2.py
?
(L'exécution de os.getcwd()
renvoie le chemin de fichier du script de départ original et non celui du fichier courant).
Ce que vous entendez par "le chemin du fichier en cours d'exécution dans le processus" ; n'est pas tout à fait clair.
sys.argv[0]
contient généralement l'emplacement du script qui a été invoqué par l'interpréteur Python.
Consultez la [documentation sys][1] pour plus de détails.
Comme @Tim et @Pat Notz l'ont souligné, l'attribut __file___ permet d'accéder aux éléments suivants
le fichier à partir duquel le module a été chargé, s'il a été chargé à partir d'un fichier
L'attribut __file__
fonctionne aussi bien pour le fichier contenant le code d'exécution principal que pour les modules importés.
Voir https://web.archive.org/web/20090918095828/http://pyref.infogami.com/__file__
Je pense qu'il s'agit simplement de __file__
. Il semblerait que vous souhaitiez également consulter le [module inspect][1].