Como conhecer / alterar o diretório atual no shell Python?


219

Estou usando o Python 3.2 no Windows 7. Quando abro o shell do Python, como posso saber qual é o diretório atual e como posso alterá-lo para outro diretório em que meus módulos estão?



4
@ astay13 - Acho que Ignacio significa que você não pretende alterar o diretório para o caminho do módulo. Você provavelmente deve verificar a variável de ambiente PYTHONPATH.
simon

Respostas:


299

Você pode usar o osmódulo

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

Mas se for para encontrar outros módulos: você pode definir uma variável de ambiente chamada PYTHONPATH, no Linux seria como

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

Em seguida, o intérprete também procura neste local por importmódulos ed. Eu acho que o nome seria o mesmo no Windows, mas não sei como mudar.

editar

No Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(extraído de http://docs.python.org/using/windows.html )

editar 2

... e melhor ainda: use virtualenve virtualenv_wrapper, isso permitirá que você crie um ambiente de desenvolvimento onde você pode adicionar caminhos de módulo como quiser ( add2virtualenv) sem poluir sua instalação ou ambiente de trabalho "normal".

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


você está certo em editar sua pergunta para adicionar a sugestão PYTHONPATH, mas observe que o OP especifica o Windows ... #
23611 Simon

E qual é o problema com o PYTHONPATH no Windows? Mas eu consertei minha resposta.
wal-o-mat

Preciso definir o PYTHONPATH na linha de comando do Windows ou no shell Python?
astay13

2
@ astray13: Você também tem a opção de ignorar a variável de ambiente e anexá-la ao sys.pathinterior do seu script.
Steven Rumbalski

3
@ astay13: não defina PYTHONPATHglobalmente se você tiver mais de um Python instalado (ou se houver programas que o incluam - em outras palavras, você nunca saberá): isso pode quebrar sua instalação de maneiras misteriosas
jfs

18

você quer

import os
os.getcwd()
os.chdir('..')

1
os.chdir ('C: \ Usuários \ Ajeya \ Documents \') ^ SintaxeErro: EOL ao verificar literalmente a cadeia de caracteres
AAI

1
@ Seja como for, você precisará dobrar barras invertidas se usá-las em uma string Python regular (não bruta). O Python também permite que você use barras avançadas. Assim, ou os.chdir('C:/Users/Ajeya/Documents'), ou os.chdir('C:\\Users\\Ajeya\\Documents')ou os.chdir(r'C:\Users\Ajeya\Documents').
Charles Duffy

Seria bom notar que você chama os.getcwd()apenas para fins de depuração, para que possamos ver qual é o diretório de trabalho antes de alterá-lo. O código para mudar realmente o cwdé apenasos.chdir('..')
Toothpick Anemone

15
>>> import os
>>> os.system('cd c:\mydir')

De fato, os.system()pode executar qualquer comando que o prompt de comando do Windows possa executar, e não apenas alterar o diretório


Arquivo "<stdin>", linha 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SintaxeErro: EOL ao verificar literalmente a cadeia de caracteres
AAI

6

Alterar o diretório atual não é a maneira de lidar com a localização de módulos no Python.

Em vez disso, consulte a documentação do Caminho de pesquisa do módulo para saber como o Python encontra qual módulo importar.

Aqui está um bit relevante da seção Módulos Padrão :

A variável sys.path é uma lista de cadeias que determina o caminho de pesquisa do intérprete para módulos. É inicializado com um caminho padrão obtido da variável de ambiente PYTHONPATH ou com um padrão interno se PYTHONPATH não estiver definido. Você pode modificá-lo usando operações de lista padrão:

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

Em resposta à sua pergunta original sobre como obter e configurar o diretório atual:

>>> 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.

Esta resposta é ouro .. Basta adicionar o diretório do projeto assim:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r 30/12/18

6

A maneira mais fácil de alterar o diretório de trabalho atual em python é usando o pacote 'os'. Abaixo há um exemplo para o computador windows:

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

# Use '\\' while changing the directory 
os.chdir("C:\\user\\foldername")

uso de "\\" e esclarecimentos sobre o computador Windows. Mas concordo que a resposta aceita é mais descritiva.
Sambeet

4

Se você import ospode usar os.getcwdpara obter o diretório de trabalho atual e os.chdiralterar seu diretório


0

Você pode tentar isso:

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"

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.