¿Cómo saber / cambiar el directorio actual en Python Shell?

219

Estoy usando Python 3.2 en Windows 7. Cuando abro el shell de Python, ¿cómo puedo saber cuál es el directorio actual y cómo puedo cambiarlo a otro directorio donde están mis módulos?

astay13
fuente
Esto ya se ha discutido [aquí] [1]: stackoverflow.com/questions/431684/how-do-i-cd-in-python
mudda
44
@ astay13 - Creo que Ignacio quiere decir que no tienes la intención de cambiar el directorio a la ruta de tu módulo. Probablemente deberías consultar la variable de entorno PYTHONPATH.
Simon

Respuestas:

299

Puedes usar el osmódulo.

>>> import os
>>> os.getcwd()
'/home/user'
>>> os.chdir("/tmp/")
>>> os.getcwd()
'/tmp'

Pero si se trata de encontrar otros módulos: puede establecer una variable de entorno llamada PYTHONPATH, en Linux sería como

export PYTHONPATH=/path/to/my/library:$PYTHONPATH

Luego, el intérprete busca también en este lugar importmódulos ed. Supongo que el nombre sería el mismo en Windows, pero no sé cómo cambiarlo.

editar

Bajo Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(tomado de http://docs.python.org/using/windows.html )

editar 2

... y aún mejor: use virtualenvy virtualenv_wrapper, esto le permitirá crear un entorno de desarrollo en el que puede agregar rutas de módulo a su gusto ( add2virtualenv) sin contaminar su instalación o entorno de trabajo "normal".

http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html

wal-o-mat
fuente
tienes razón para editar su pregunta para añadir la sugerencia acerca PYTHONPATH, pero tenga en cuenta que el PO especifica de Windows ...
Simon
¿Y cuál es el problema con PYTHONPATH en Windows? Pero arreglé mi respuesta.
wal-o-mat
¿Tengo que configurar PYTHONPATH en la línea de comandos de Windows o en el shell de Python?
astay13
2
@ astray13: También tiene la opción de ignorar la variable de entorno y, en su lugar, agregarla al sys.pathinterior de su script.
Steven Rumbalski
3
@ astay13: no configure PYTHONPATHglobalmente si tiene más de un Python instalado (o tiene programas instalados que combinan Python con ellos, en otras palabras, nunca lo sabrá): puede interrumpir su instalación de maneras misteriosas
jfs
18

usted quiere

import os
os.getcwd()
os.chdir('..')
Simón
fuente
1
os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL al escanear literal de cadena
AAI
1
@ Lo que sea, debe duplicar las barras diagonales inversas si las usa en una cadena de Python normal (sin procesar). Python también te permite usar barras diagonales en su lugar. Por lo tanto os.chdir('C:/Users/Ajeya/Documents'), o os.chdir('C:\\Users\\Ajeya\\Documents'), o os.chdir(r'C:\Users\Ajeya\Documents').
Charles Duffy
Sería bueno tener en cuenta que os.getcwd()solo llama con fines de depuración para que podamos ver cuál es el directorio de trabajo antes de cambiarlo. El código para cambiar realmente cwdes simplementeos.chdir('..')
Toothpick Anemone
15
>>> import os
>>> os.system('cd c:\mydir')

De hecho, os.system()puede ejecutar cualquier comando que el símbolo del sistema de Windows pueda ejecutar, no solo cambiar el directorio.

shankar_pratap
fuente
Archivo "<stdin>", línea 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL al escanear literal de cadena
AAI
6

Cambiar el directorio actual no es la forma de tratar de encontrar módulos en Python.

Por el contrario, vea los documentos de The Module Search Path para saber cómo Python encuentra qué módulo importar.

Aquí hay un bit relevante de la sección Módulos estándar :

La variable sys.path es una lista de cadenas que determina la ruta de búsqueda del intérprete para los módulos. Se inicializa en una ruta predeterminada tomada de la variable de entorno PYTHONPATH, o de un valor predeterminado incorporado si PYTHONPATH no está configurado. Puede modificarlo mediante operaciones de lista estándar:

>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')

En respuesta a su pregunta original sobre cómo obtener y configurar el directorio actual:

>>> help(os.getcwd)

getcwd(...)
    getcwd() -> path

    Return a string representing the current working directory.

>>> help(os.chdir)

chdir(...)
    chdir(path)

    Change the current working directory to the specified path.
Steven Rumbalski
fuente
Esta respuesta es oro. Simplemente agregue el directorio de su proyecto así:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r
6

La forma más fácil de cambiar el directorio de trabajo actual en python es usar el paquete 'os'. A continuación hay un ejemplo para computadora con Windows:

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

# Use '\\' while changing the directory 
os.chdir("C:\\user\\foldername")
sambeet
fuente
uso de "\\" y aclaraciones sobre la computadora con Windows. Pero estoy de acuerdo en que la respuesta aceptada es más descriptiva.
sambeet
4

Si import ospuede usar os.getcwdpara obtener el directorio de trabajo actual, y puede usar os.chdirpara cambiar su directorio

deontólogo
fuente
0

Puedes probar esto:

import os

current_dir = os.path.dirname(os.path.abspath(__file__))   # Can also use os.getcwd()
print(current_dir)                                         # prints(say)- D:\abc\def\ghi\jkl\mno"
new_dir = os.chdir('..\\..\\..\\')                         
print(new_dir)                                             # prints "D:\abc\def\ghi"

Aditya NS
fuente