2011-11-23 14 views
132

Sto usando Python 3.2 su Windows 7. Quando apro la shell Python, come faccio a sapere qual è la directory corrente e come posso cambiarla in un'altra directory dove sono i miei moduli?Come sapere/cambiare la directory corrente nella shell Python?

+1

@Ignacio, cosa intendi? – astay13

+0

Questo è già stato discusso [qui] [1]: http://stackoverflow.com/questions/431684/how-do-i-cd-in-python – mudda

+4

@ astay13 - Penso che Ignacio significhi che tu non intendono modificare la directory nel percorso del modulo. Probabilmente dovresti controllare la variabile di ambiente PYTHONPATH. – simon

risposta

188

È possibile utilizzare il modulo os.

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

Ma se si tratta di trovare altri moduli: è possibile impostare una variabile d'ambiente chiamata PYTHONPATH, sotto Linux sarebbe come

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

Poi, l'interprete cerca anche in questo posto per import moduli ed. Immagino che il nome sarebbe lo stesso in Windows, ma non so come cambiarlo.

modificare

In Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib 

(tratto da http://docs.python.org/using/windows.html)

Edit 2

... e ancora meglio: usare virtualenv e virtualenv_wrapper, questo lo farà per creare un ambiente di sviluppo in cui è possibile aggiungere percorsi modulo come desiderato (add2virtualenv) senza inquinare l'installazione o l'ambiente di lavoro "normale".

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

+0

hai ragione di modificare la tua domanda per aggiungere il suggerimento su 'PYTHONPATH', ma nota che l'OP specifica Windows ... – simon

+0

E qual è il problema con PYTHONPATH in Windows? Ma ho risolto la mia risposta. –

+0

Devo impostare PYTHONPATH nella riga di comando di Windows o nella shell Python? – astay13

4

Se import os è possibile utilizzare os.getcwd per ottenere la directory di lavoro corrente, ed è possibile utilizzare os.chdir per cambiare la directory

12

si desidera

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

os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ SintassiErrore: EOL durante la scansione della stringa letterale – AAI

+1

@Qualunque, è necessario per raddoppiare i backslash se li si utilizza in una normale (non grezza) stringa Python. Python ti consente anche di usare le barre in avanti. Pertanto, sia 'os.chdir ('C:/Users/Ajeya/Documents')', o 'os.chdir ('C: \\ Users \\ Ajeya \\ Documents')', o 'os.chdir (r 'C: \ Users \ Ajeya \ Documents') '. –

4

cambiare la directory corrente non è il modo di trattare con la ricerca di moduli in Python.

Piuttosto, vedere i documenti per The Module Search Path per come Python trova il modulo da importare.

Qui è un po 'rilevante dal Standard Modules sezione:

The variable sys.path is a list of strings that determines the interpreter’s search path for modules. It is initialized to a default path taken from the environment variable PYTHONPATH, or from a built-in default if PYTHONPATH is not set. You can modify it using standard list operations:

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

In risposta alla tua domanda iniziale su come ottenere e impostare la directory corrente:

>>> 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. 
7
>>> import os 
>>> os.system('cd c:\mydir') 

Infatti, os.system() può eseguire qualsiasi comando che il prompt dei comandi di Windows può eseguire, non solo cambiare dir.

+0

File "", linea 1 os.system ('cd c: \ Users \ Ajeya \ Documenti \') ^ SyntaxError: EOL durante la scansione stringa letterale – AAI

0

Il modo più semplice per cambiare la directory di lavoro corrente in python è usare il pacchetto "os". Di seguito è riportato un esempio per computer Windows:

#import the os package 
import os 
# Confirm the current working directory 
os.getcwd() 
# use '\\' while chaning the directory 
os.chdir("C:\\user\\foldername") 
+0

Come funziona questo differiscono dalla risposta accettata? – Iceman

+0

uso di "\\" e chiarimenti sul computer Windows. Ma sono d'accordo che la risposta accettata sia più descrittiva. – sambeet

Problemi correlati