¿Cómo obtener la ruta completa del directorio del archivo actual en Python?

Quiero obtener la ruta del directorio del archivo actual.
Lo intenté:

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

Pero, ¿cómo puedo recuperar la ruta del directorio? Por ejemplo:

 'C:\\python27\\' 

Si te refieres al directorio del script que se está ejecutando:

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

Si te refieres al directorio de trabajo actual:

 import os os.getcwd() 

Tenga en cuenta que antes y después del file hay dos guiones bajos, no solo uno.

También tenga en cuenta que si está ejecutando de forma interactiva o si ha cargado un código de algo que no sea un archivo (por ejemplo, una base de datos o un recurso en línea), no se puede configurar __file__ ya que no hay una noción de “archivo actual”. La respuesta anterior asume el escenario más común de ejecutar una secuencia de comandos de Python que está en un archivo.

En Python 3:

 from pathlib import Path mypath = Path().absolute() print(mypath) 

Documentación de Pathlib.

 import os print os.path.dirname(__file__) 

Puede usar la biblioteca os y os.path fácilmente de la siguiente manera

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

os.path.dirname devuelve el directorio superior del actual. Nos permite cambiar a un nivel superior sin pasar ningún argumento de archivo y sin conocer la ruta absoluta.

En Python 3.x hago:

 from pathlib import Path path = Path(__file__).parent.absolute() 

Explicación:

  • Path(__file__) es la ruta al archivo actual.
  • .parent te da el directorio donde se encuentra el archivo.
  • .absolute() te da la ruta absoluta completa hacia él.

Usar pathlib es la forma moderna de trabajar con caminos. Si, por alguna razón, lo necesita como una cadena más adelante, simplemente haga str(path) .

IPython tiene un comando mágico %pwd para obtener el directorio de trabajo actual. Se puede utilizar de la siguiente manera:

 from IPython.terminal.embed import InteractiveShellEmbed ip_shell = InteractiveShellEmbed() present_working_directory = ip_shell.magic("%pwd") 

En IPython Jupyter Notebook %pwd se puede usar directamente de la siguiente manera:

 present_working_directory = %pwd 

Para mantener la coherencia de la migración en todas las plataformas (macOS / Windows / Linux), intente:

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

He creado una función para usar cuando se ejecuta python bajo IIS en CGI para obtener la carpeta actual:

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

Sistema: MacOS

Versión: Python 3.6 w / Anaconda

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

PROPIEDADES DE CAMINO ÚTILES EN 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)) 

SALIDA: EL CAMINO ABSOLUTO ES EL CAMINO EN EL QUE SE COLOCA SU ARCHIVO PYTHON

Ruta absoluta: D: \ Study \ Machine Learning \ Jupitor Notebook \ JupytorNotebookTest2 \ Udacity_Scripts \ Matplotlib y Sea Part2

Ruta del archivo: D: \ Study \ Machine Learning \ Jupitor Notebook \ JupytorNotebookTest2 \ Udacity_Scripts \ Matplotlib y Sea Part2 \ data \ fuel_econ.csv

isfileExist: True

isadirectorio: falso

Extensión de archivo: .csv

 ## IMPORT MODULES import os ## CALCULATE FILEPATH VARIABLE filepath = os.path.abspath('') ## ~ os.getcwd() ## TEST TO MAKE SURE os.getcwd() is EQUIVALENT ALWAYS.. ## ..OR DIFFERENT IN SOME CIRCUMSTANCES