Jak poznać / zmienić bieżący katalog w powłoce Pythona?

219

Korzystam z Python 3.2 w systemie Windows 7. Kiedy otwieram powłokę Python, skąd mam wiedzieć, jaki jest bieżący katalog i jak mogę go zmienić na inny katalog, w którym znajdują się moje moduły?

astay13
źródło
Zostało to już omówione [tutaj] [1]: stackoverflow.com/questions/431684/how-do-i-cd-in-python
mudda
4
@ astay13 - Myślę, że Ignacio oznacza, że ​​nie masz zamiaru zmieniać katalogu na ścieżkę modułu. Prawdopodobnie powinieneś sprawdzić zmienną środowiskową PYTHONPATH.
simon

Odpowiedzi:

299

Możesz użyć osmodułu.

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

Ale jeśli chodzi o znalezienie innych modułów: Możesz ustawić zmienną środowiskową o nazwie PYTHONPATH, pod Linuksem byłoby jak

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

Następnie tłumacz szuka również w tym miejscu importmodułów ed. Myślę, że nazwa będzie taka sama w systemie Windows, ale nie wiem, jak to zmienić.

edytować

W systemie Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(pochodzi z http://docs.python.org/using/windows.html )

edycja 2

... a nawet lepiej: użyj virtualenvi virtualenv_wrapper, pozwoli ci to stworzyć środowisko programistyczne, w którym możesz dodawać ścieżki modułów według add2virtualenvwłasnego uznania ( ) bez zanieczyszczania instalacji lub „normalnego” środowiska pracy.

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

wal-o-mat
źródło
masz rację, edytując swoje pytanie, aby dodać sugestię PYTHONPATH, ale pamiętaj, że PO określa system Windows ...
sim
A jaki jest problem z PYTHONPATH pod Windows? Ale naprawiłem swoją odpowiedź.
wal-o-mat,
Czy muszę ustawić PYTHONPATH w wierszu poleceń systemu Windows lub w powłoce Pythona?
astay13,
2
@ astray13: Możesz również zignorować zmienną środowiskową i zamiast tego dołączyć do sys.pathskryptu.
Steven Rumbalski
3
@ astay13: nie ustawiaj PYTHONPATHglobalnie, jeśli masz więcej niż jednego zainstalowanego Pythona (lub masz zainstalowane programy, które zawierają pakiet Pythona z nimi - innymi słowy nigdy się nie dowiesz): może to zepsuć instalację w tajemniczy sposób
jfs
18

chcesz

import os
os.getcwd()
os.chdir('..')
Szymon
źródło
1
os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ Błąd składni: EOL podczas skanowania literału łańcucha
AAI
1
@ Niezależnie od tego, musisz podwoić ukośniki odwrotne, jeśli używasz ich w regularnym (nie-surowym) ciągu Python. Python pozwala również używać zamiast tego ukośników. Tak więc, zarówno os.chdir('C:/Users/Ajeya/Documents')lub os.chdir('C:\\Users\\Ajeya\\Documents')lub os.chdir(r'C:\Users\Ajeya\Documents').
Charles Duffy
Warto zauważyć, że dzwonisz os.getcwd()tylko w celu debugowania, abyśmy mogli zobaczyć, jaki jest katalog roboczy, zanim go zmienimy. Kod do zmiany cwdjest po prostuos.chdir('..')
Wykałaczka Anemone
15
>>> import os
>>> os.system('cd c:\mydir')

W rzeczywistości os.system()może wykonać dowolne polecenie, które może wykonać wiersz polecenia systemu Windows, a nie tylko zmienić katalog.

shankar_pratap
źródło
Plik „<stdin>”, wiersz 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ Błąd składni: EOL podczas skanowania literału łańcucha
AAI
6

Zmiana bieżącego katalogu nie jest sposobem na znalezienie modułów w Pythonie.

Zamiast tego zobacz dokumentację ścieżki wyszukiwania modułów, aby dowiedzieć się, w jaki sposób Python znajduje moduł do zaimportowania.

Oto odpowiedni fragment z sekcji Moduły standardowe :

Zmienna sys.path jest listą ciągów, które określają ścieżkę wyszukiwania modułów interpretera. Jest inicjowany do domyślnej ścieżki pobranej ze zmiennej środowiskowej PYTHONPATH lub z wbudowanej wartości domyślnej, jeśli PYTHONPATH nie jest ustawiony. Możesz go zmodyfikować za pomocą standardowych operacji na liście:

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

W odpowiedzi na twoje oryginalne pytanie dotyczące pobierania i ustawiania bieżącego katalogu:

>>> 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
źródło
Ta odpowiedź jest złota. Dodaj katalog projektu w ten sposób:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r
6

Najłatwiejszym sposobem zmiany bieżącego katalogu roboczego w pythonie jest użycie pakietu „os”. Poniżej znajduje się przykład komputera z systemem 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
źródło
użycie „\\” i wyjaśnienie na temat komputera z systemem Windows. Ale zgadzam się, że przyjęta odpowiedź jest bardziej opisowa.
sambeet
4

Jeśli możesz import osużyć, os.getcwdaby uzyskać bieżący katalog roboczy i możesz użyć os.chdirdo zmiany katalogu

deontolog
źródło
0

Możesz spróbować:

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
źródło