Shriram
Cuando ejecuto el siguiente script en IDLE
import os
print(os.getcwd())
obtengo salida como
D:\testtool
pero cuando ejecuto desde cmd prompt, obtengo
c:\Python33>python D:\testtool\current_dir.py
c:\Python33
¿Cómo obtengo el mismo resultado que obtuve usando IDLE?
Maciek
Parece que IDLE cambia su directorio de trabajo actual a la ubicación del script que se ejecuta, mientras que cuando ejecuta el script usando cmd no hace eso y deja CWD como está.
Para cambiar el directorio de trabajo actual al que contiene su script, puede usar:
import os
os.chdir(os.path.dirname(__file__))
print(os.getcwd())
El __file__
La variable está disponible solo si ejecuta el script desde el archivo y contiene la ruta al archivo. Más sobre esto aquí: Python __file__ atributo absoluto o relativo?
-
Recomendaría no cambiar el directorio, ya que podría obtener resultados no deterministas si el usuario esperaba ejecutar el script desde un directorio diferente.
– Federico Ollinger
2 de septiembre de 2021 a las 5:05
-
Estoy de acuerdo con @FrederickOllinger, no es necesario cambiar de directorio.
os.path.dirname(__file__)
es suficiente.–Ashley Kleynhans
5 de julio de 2022 a las 13:50
butsyk
Usando pathlib puede obtener la carpeta en la que se encuentra el archivo actual. __file__
es el nombre de ruta del archivo desde el que se cargó el módulo. Árbitro: documentos
import pathlib
current_dir = pathlib.Path(__file__).parent
current_file = pathlib.Path(__file__)
Referencia del documento: enlace
-
¿No pueden ser diferentes la ubicación del archivo actual y el directorio de trabajo actual?
– Stevoisiak
24 de junio de 2019 a las 16:38
-
Sí, ¿puede cambiar el directorio de trabajo actual, cwd, con os.chdir (ruta). Cambie el directorio de trabajo actual a la ruta. docs.python.org/3/library/os.html#os-file-dir
– Federico Ollinger
13 de agosto de 2022 a las 16:59
predeterminado de Python pathlib
biblioteca proporciona el cwd así:
import pathlib
pathlib.Path.cwd()
-
Genial, estoy buscando la biblioteca pathlib
– muchotarsp
7 de junio de 2021 a las 9:04
Esta pregunta se basa en una premisa equivocada;
os.getcwd()
es, de hecho, cómo se obtiene el directorio de trabajo actual. El problema es ese la forma en que ejecuta el script cambia cuál es el directorio de trabajo actual.– Karl Knechtel
15 de marzo a las 7:37
En otras palabras: la respuesta directa a la pregunta es “no por nada en el código de Python, sino por usando comandos de terminal para moverse a
D:\testtool
y luego corriendopython current_dir.py
“.– Karl Knechtel
15 de marzo a las 7:54