web-dev-qa-db-fra.com

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

Quand j'exécute le script suivant dans IDLE

import os
print(os.getcwd())

Je reçois la sortie en tant que

D:\testtool

mais quand je cours de l'invite cmd, je reçois

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

Comment puis-je obtenir le même résultat obtenu avec IDLE?

47
Shriram

Il semble qu'IDLE remplace son répertoire de travail actuel par l'emplacement du script exécuté, alors que l'exécution du script à l'aide de cmd ne le fait pas et laisse CWD en l'état.

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())

La variable __file__ Est disponible uniquement si vous exécutez un script à partir d'un fichier et contient le chemin d'accès au fichier. Plus de détails ici: attribut Python __file__ absolu ou relatif?

75
Maciek

En utilisant pathlib, vous pouvez obtenir le dossier dans lequel se trouve le fichier actuel. __file__ est le 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__)

Réf. Doc: lien

4
butsyk