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!