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

Mary-Kate Olsen
Libérer: 2024-10-26 18:30:03
original
875 Les gens l'ont consulté

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>
Copier après la connexion

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
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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

a.py: File Path = C:\a.py
b.py: File Path = C:\subdir\b.py
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!