Maison >développement back-end >Tutoriel Python >Comment puis-je obtenir de manière fiable le chemin du script Python en cours d'exécution ?

Comment puis-je obtenir de manière fiable le chemin du script Python en cours d'exécution ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 18:30:03960parcourir

How Can I Reliably Get the Path of the Currently Executing Python Script?

Trouver le chemin du fichier en cours d'exécution en Python

Obtenir le chemin d'accès au script d'exécution en cours en Python est crucial pour accéder aux fichiers et effectuer diverses opérations. Cependant, plusieurs approches peuvent échouer dans certaines conditions. Cet article explore une méthode fiable pour récupérer le chemin du fichier dans divers scénarios.

Le défi des approches existantes

Méthodes couramment utilisées telles que os.path.abspath(os. path.dirname(sys.argv[0])) et os.path.abspath(os.path.dirname(__file__)) ont des limitations. sys.argv[0] peut ne pas fournir le chemin correct lors de l'exécution à partir d'un autre script Python, tandis que __file__ peut être indisponible dans les scripts py2exe, IDLE, les environnements Mac OS X et les instances similaires.

Un universel Solution

Pour résoudre ces problèmes, une approche fiable consiste à utiliser les modules inspect et os :

<code class="python">from inspect import getsourcefile
from os.path import abspath</code>

En utilisant getsourcefile(lambda:0), vous pouvez obtenir le fichier source de la fonction lambda en cours d'exécution, contournant efficacement les limitations des autres méthodes. Le chemin est ensuite extrait à l'aide de abspath.

Exemple de scénario

Considérez la structure de répertoires suivante :

C:.
|   a.py
\---subdir
        b.py

a.py contient :

<code class="python">from inspect import getsourcefile
from os.path import abspath

print("a.py: File Path =", abspath(getsourcefile(lambda:0)))
execfile("subdir/b.py")</code>

b.py contient :

<code class="python">from inspect import getsourcefile
from os.path import abspath

print("b.py: File Path =", abspath(getsourcefile(lambda:0)))</code>

L'exécution de a.py devrait afficher :

a.py: File Path = C:\a.py
b.py: File Path = C:\subdir\b.py

Ceci démontre la capacité d'obtenir correctement le chemin du fichier dans diverses situations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn