web-dev-qa-db-fra.com

Comment obtenir le chemin complet du répertoire du fichier en cours dans Python?

Je veux obtenir le chemin du répertoire du fichier actuel.
J'ai essayé: 

>>> os.path.abspath(__file__)
'C:\\python27\\test.py'

Mais comment puis-je récupérer le chemin du répertoire? Par exemple:

'C:\\python27\\'
544
Shubham

Si vous voulez dire le répertoire du script en cours d'exécution:

import os
os.path.dirname(os.path.abspath(__file__))

Si vous voulez parler du répertoire de travail actuel:

import os
os.getcwd()

Notez qu'avant et après file, il y a deux traits de soulignement, pas un seul. 

Notez également que si vous exécutez de manière interactive ou avez du code chargé à partir d'un élément autre qu'un fichier (par exemple, une base de données ou une ressource en ligne), __file__ peut ne pas être défini car il n'existe aucune notion de "fichier actuel". La réponse ci-dessus suppose le scénario le plus courant consistant à exécuter un script python figurant dans un fichier. 

1149
Bryan Oakley

En Python 3:

from pathlib import Path

mypath = Path().absolute()
print(mypath)
34
Ron Kalian
import os
print os.path.dirname(__file__)
9
chefsmart

Vous pouvez utiliser les bibliothèques os et os.path facilement comme suit

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

os.path.dirname renvoie le répertoire supérieur du répertoire actuel. Il nous permet de passer à un niveau supérieur sans passer aucun argument de fichier ni connaître le chemin absolu.

5
mulg0r

PROPRIÉTÉS DE CHEMIN UTILES À PYTHON:

 from pathlib import Path

    #Returns the path of the directory, where your script file is placed
    mypath = Path().absolute()
    print('Absolute path : {}'.format(mypath))

    #if you want to go to any other file inside the subdirectories of the directory path got from above method
    filePath = mypath/'data'/'fuel_econ.csv'
    print('File path : {}'.format(filePath))

    #To check if file present in that directory or Not
    isfileExist = filePath.exists()
    print('isfileExist : {}'.format(isfileExist))

    #To check if the path is a directory or a File
    isadirectory = filePath.is_dir()
    print('isadirectory : {}'.format(isadirectory))

    #To get the extension of the file
    fileExtension = mypath/'data'/'fuel_econ.csv'
    print('File extension : {}'.format(filePath.suffix))

SORTIE: CHEMIN ABSOLU IS LE CHEMIN O VOS FICHIERS PYTHON IS PLACED

Chemin absolu: D:\Etude\Apprentissage\Bloc-notes Jupitor\JupytorNotebookTest2\Udacity_Scripts\Matplotlib et seaborn Part2

Chemin du fichier: D:\Etude\Apprentissage\Jupitor Notebook\JupytorNotebookTest2\Udacity_Scripts\Matplotlib et seaborn Part2\data\fuel_econ.csv

isfileExist: True

isadirectory: False

Extension de fichier: .csv

1
Arpan Saini

J'ai créé une fonction à utiliser lors de l'exécution de python sous IIS dans CGI afin d'obtenir le dossier actuel:

import os 
   def getLocalFolder():
        path=str(os.path.dirname(os.path.abspath(__file__))).split('\\')
        return path[len(path)-1]
0
Gil Allen

Pour conserver la cohérence de la migration sur toutes les plateformes (macOS/Windows/Linux), essayez les solutions suivantes:

path = r'%s' % os.getcwd().replace('\\','/')
0
Qiao Zhang

IPython a une commande magique %pwd pour obtenir le répertoire de travail actuel. Il peut être utilisé de la manière suivante:

from IPython.terminal.embed import InteractiveShellEmbed

ip_Shell = InteractiveShellEmbed()

present_working_directory = ip_Shell.magic("%pwd")

Sur IPython, Jupyter Notebook %pwd peut être utilisé directement comme suit:

present_working_directory = %pwd
0
Nafeez Quraishi

Essaye ça:

import os
dir_path = os.path.dirname(os.path.realpath(__file__))
0

Système: MacOS

Version: Python 3.6 avec Anaconda

import os rootpath = os.getcwd() os.chdir(rootpath)

0
Suyang Xu

En Python 3.x je fais:

from pathlib import Path

path = Path(__file__).parent.absolute()

Explication:

  • Path(__file__) est le chemin du fichier actuel.
  • .parent vous donne le répertoirele fichier est dans.
  • .absolute() vous donne le full absolu chemin d'accès.

Utiliser pathlib est la manière moderne de travailler avec des chemins. Si vous en avez besoin ultérieurement sous forme de chaîne pour une raison quelconque, il suffit de faire str(path).

0
Arminius