87 votes

Comment obtenir le répertoire de travail actuel en utilisant python 3 ?

Lorsque j'exécute le script suivant dans IDLE

import os
print(os.getcwd())

J'obtiens la sortie suivante

D:\testtool

mais lorsque je l'exécute à partir de l'invite cmd, j'obtiens

c:\Python33>python D:\testtool\current_dir.py
c:\Python33

Comment obtenir le même résultat qu'avec IDLE ?

121voto

Maciek Points 371

Il semble que IDLE modifie son répertoire de travail actuel à l'emplacement du script qui est exécuté, alors que lors de l'exécution du script en utilisant cmd ne fait pas cela et laisse le CWD tel quel.

Pour changer le répertoire de travail actuel en celui contenant votre script, vous pouvez utiliser :

import os
os.chdir(os.path.dirname(__file__))
print(os.getcwd())

En __file__ La variable est disponible uniquement si vous exécutez script à partir d'un fichier, et elle contient le chemin d'accès au fichier. Plus d'informations à ce sujet ici : Attribut __file__ de Python : absolu ou relatif ?

21voto

butsyk Points 227

En utilisant pathlib, vous pouvez obtenir le dossier dans lequel se trouve le fichier courant. __file__ est le nom du chemin du fichier à partir duquel le module a été chargé. Réf : docs

import pathlib

current_dir = pathlib.Path(__file__).parent
current_file = pathlib.Path(__file__)

Doc réf : lien

9voto

ukemi Points 3499

La valeur par défaut de Python pathlib fournit le cwd comme ceci :

import pathlib

pathlib.Path.cwd()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X