Come conoscere / modificare la directory corrente nella shell Python?


219

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


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

4
@ astay13 - Penso che Ignacio significhi che non hai intenzione di cambiare directory nel percorso del tuo modulo. Probabilmente dovresti dare un'occhiata alla variabile d'ambiente PYTHONPATH.
simon,

Risposte:


299

Puoi usare il osmodulo.

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

Quindi, l'interprete cerca anche in questo posto i importmoduli ed. Immagino che il nome sarebbe lo stesso in Windows, ma non so come cambiare.

modificare

Sotto Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

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

modifica 2

... e ancora meglio: usa virtualenve virtualenv_wrapper, questo ti permetterà di creare un ambiente di sviluppo in cui puoi aggiungere i percorsi dei moduli come preferisci ( add2virtualenv) senza inquinare l'installazione o l'ambiente di lavoro "normale".

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


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

E qual è il problema con PYTHONPATH su Windows? Ma ho fissato la mia risposta.
wal-o-mat,

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

2
@ astray13: hai anche la possibilità di ignorare la variabile d'ambiente e invece di aggiungerla sys.pathall'interno dello script.
Steven Rumbalski il

3
@ astay13: non impostare a PYTHONPATHlivello globale se hai installato più di un Python (o hai programmi installati che raggruppano Python con loro - in altre parole non lo saprai mai): potrebbe interrompere l'installazione in modi misteriosi
jfs

18

tu vuoi

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

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

1
@Qualunque sia, devi raddoppiare le barre rovesciate se le usi in una normale stringa Python (non grezza). Python ti consente anche di usare le barre in avanti. Quindi, o os.chdir('C:/Users/Ajeya/Documents'), oppure os.chdir('C:\\Users\\Ajeya\\Documents'), oppure os.chdir(r'C:\Users\Ajeya\Documents').
Charles Duffy,

Sarebbe bene notare che si chiama os.getcwd()solo a scopo di debug in modo che possiamo vedere quale sia la directory di lavoro prima di cambiarla. Il codice per cambiare effettivamente cwdè soloos.chdir('..')
Stuzzicadenti Anemone del

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

In effetti, os.system()può eseguire qualsiasi comando eseguibile dal prompt dei comandi di Windows, non solo cambiare dir.


File "<stdin>", riga 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SintassiError: EOL durante la scansione della stringa letterale
AAI

6

La modifica della directory corrente non è il modo di gestire la ricerca di moduli in Python.

Piuttosto, consulta la documentazione di The Module Search Path per come Python trova quale modulo importare.

Ecco un bit rilevante dalla sezione Moduli standard :

La variabile sys.path è un elenco di stringhe che determina il percorso di ricerca dell'interprete per i moduli. Viene inizializzato su un percorso predefinito prelevato dalla variabile di ambiente PYTHONPATH o da un predefinito predefinito se PYTHONPATH non è impostato. È possibile modificarlo utilizzando le operazioni di elenco standard:

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

Per rispondere alla tua domanda originale 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.

Questa risposta è d'oro. Basta aggiungere la directory del progetto in questo modo:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r

6

Il modo più semplice per cambiare l'attuale directory di lavoro 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 changing the directory 
os.chdir("C:\\user\\foldername")

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

4

Se è import ospossibile utilizzare os.getcwdper ottenere la directory di lavoro corrente e è possibile utilizzare os.chdirper modificare la directory


0

Puoi provare questo:

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"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.