Python Scripting

Récupérer le répertoire d’exécution d’un script Python lancé par un fichier batch

Spread the love

Déterminer le répertoire à partir duquel un fichier batch lance un script Python est essentiel pour diverses tâches de script. Cet article explore trois méthodes Python pour récupérer cette information cruciale, s’adaptant à différents styles de codage et préférences.

Table des matières

Méthode 1 : Utilisation du module os

Le module os offre un moyen simple d’obtenir le répertoire de travail courant. La fonction os.getcwd() renvoie le répertoire à partir duquel le script Python (et donc le fichier batch) a été exécuté.


import os

current_directory = os.getcwd()
print(f"Le répertoire courant est : {current_directory}")

Cette méthode est simple, largement compatible et efficace pour la plupart des scénarios.

Méthode 2 : Utilisation du module sys

Le module sys, sans fournir directement le répertoire de travail courant, peut être combiné avec os.path.dirname() pour obtenir le même résultat, notamment lorsqu’on traite le chemin du script. Ceci s’avère précieux lorsqu’un fichier batch exécute un script résidant dans un sous-répertoire.


import sys
import os

try:
    script_path = sys.argv[0]
    script_directory = os.path.dirname(script_path)
    print(f"Le répertoire du script est : {script_directory}")
except IndexError:
    script_directory = os.getcwd()
    print("Script exécuté directement ; utilisation de os.getcwd()")

print(f"Le répertoire du script (gestion des cas limites) : {script_directory}")

sys.argv[0] contient le chemin du script. os.path.dirname() extrait le répertoire. Le bloc try-except gère les erreurs potentielles si le script est exécuté sans chemin.

Méthode 3 : Utilisation du module pathlib

Le module pathlib fournit une approche orientée objet de la manipulation des chemins, améliorant la lisibilité et offrant des fonctionnalités avancées.


from pathlib import Path

current_directory = Path().resolve()
print(f"Le répertoire courant est : {current_directory}")

parent_directory = Path().resolve().parent
print(f"Le répertoire parent est : {parent_directory}")

Path().resolve() donne le chemin absolu. Cette méthode est plus propre et plus adaptée aux opérations de chemin complexes.

Conclusion

Les trois méthodes déterminent efficacement le répertoire d’exécution. os.getcwd() est la plus simple et souvent suffisante. sys offre une flexibilité pour les chemins relatifs au script, tandis que pathlib améliore la lisibilité et facilite les manipulations de chemins complexes. Le meilleur choix dépend de vos besoins spécifiques et de votre style de codage.

FAQ

  • Q : Que se passe-t-il si mon script s’exécute à partir d’un répertoire différent de celui du fichier batch ? R : Les méthodes renvoient le répertoire d’exécution du script, pas nécessairement celui du fichier batch. Pour obtenir le répertoire du fichier batch, transmettez-le en argument à votre script Python.
  • Q : Quelle est la différence entre os.getcwd() et Path().resolve() ? R : Les deux renvoient le répertoire de travail courant, mais Path().resolve() renvoie un objet Path, permettant des opérations de chemin supplémentaires. os.getcwd() renvoie une chaîne de caractères.
  • Q : J’obtiens une erreur en utilisant sys.argv[0]. R : Vérifiez l’invocation du script dans votre fichier batch. L’erreur peut provenir d’un chemin incorrect ou d’un problème dans la façon dont le script est appelé dans le fichier batch. La gestion des erreurs de la Méthode 2 est cruciale pour une gestion élégante.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *