Woher weiß / ändert man das aktuelle Verzeichnis in der Python-Shell?

219

Ich verwende Python 3.2 unter Windows 7. Wenn ich die Python-Shell öffne, wie kann ich das aktuelle Verzeichnis ermitteln und in ein anderes Verzeichnis ändern, in dem sich meine Module befinden?

astay13
quelle
Dies wurde bereits [hier] [1] besprochen
mudda
4
@ astay13 - Ich denke, Ignacio bedeutet, dass Sie nicht beabsichtigen, das Verzeichnis in Ihren Modulpfad zu ändern. Sie sollten wahrscheinlich die Umgebungsvariable PYTHONPATH überprüfen.
Simon

Antworten:

299

Sie können das osModul verwenden.

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

Aber wenn es darum geht, andere Module zu finden: Sie können eine Umgebungsvariable namens PYTHONPATHunter Linux festlegen

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

Dann sucht der Interpreter auch an dieser Stelle nach imported-Modulen. Ich denke, der Name wäre unter Windows der gleiche, aber ich weiß nicht, wie ich ihn ändern soll.

bearbeiten

Unter Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(entnommen aus http://docs.python.org/using/windows.html )

bearbeiten 2

... und noch besser: Mit virtualenvund virtualenv_wrapperkönnen Sie eine Entwicklungsumgebung erstellen, in der Sie Modulpfade nach Belieben hinzufügen können ( add2virtualenv), ohne Ihre Installation oder "normale" Arbeitsumgebung zu verschmutzen.

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

Wal-O-Mat
quelle
Sie haben Recht, Ihre Frage zu bearbeiten, um den Vorschlag zu hinzufügen PYTHONPATH, aber beachten Sie, dass das OP Windows spezifiziert ...
Simon
Und was ist das Problem mit PYTHONPATH unter Windows? Aber ich habe meine Antwort korrigiert.
Wal-O-Mat
Muss ich PYTHONPATH in der Windows-Befehlszeile oder in der Python-Shell festlegen?
Astay13
2
@ astray13: Sie haben auch die Möglichkeit, die Umgebungsvariable zu ignorieren und stattdessen an das sys.pathInnere Ihres Skripts anzuhängen .
Steven Rumbalski
3
@ astay13: Nicht PYTHONPATHglobal festlegen, wenn mehr als ein Python installiert ist (oder Programme installiert sind, die Python mit ihnen bündeln - mit anderen Worten, Sie werden es nie erfahren): Dies kann Ihre Installation auf mysteriöse Weise
unterbrechen
18

Sie wollen

import os
os.getcwd()
os.chdir('..')
Simon
quelle
1
os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL beim Scannen von String-Literal
AAI
1
@Was auch immer, Sie müssen Backslashes verdoppeln, wenn Sie sie in einer regulären (nicht rohen) Python-Zeichenfolge verwenden. Mit Python können Sie stattdessen auch Schrägstriche verwenden. Also entweder os.chdir('C:/Users/Ajeya/Documents')oder os.chdir('C:\\Users\\Ajeya\\Documents')oder os.chdir(r'C:\Users\Ajeya\Documents').
Charles Duffy
Es ist gut zu beachten, dass Sie os.getcwd()nur zu Debugging-Zwecken aufrufen, damit wir sehen können, wie das Arbeitsverzeichnis lautet, bevor wir es ändern. Der Code, um das tatsächlich zu ändern, cwdist nuros.chdir('..')
Zahnstocher Anemone
15
>>> import os
>>> os.system('cd c:\mydir')

os.system()Kann in der Tat jeden Befehl ausführen, den die Windows-Eingabeaufforderung ausführen kann, und nicht nur das Verzeichnis ändern.

shankar_pratap
quelle
Datei "<stdin>", Zeile 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL beim Scannen von String-Literal
AAI
6

Das Ändern des aktuellen Verzeichnisses ist nicht der Weg, um Module in Python zu finden.

In den Dokumenten zu The Module Search Path erfahren Sie vielmehr, wie Python das zu importierende Modul findet.

Hier ist ein relevantes Bit aus dem Abschnitt Standardmodule :

Die Variable sys.path ist eine Liste von Zeichenfolgen, die den Suchpfad des Interpreters für Module bestimmt. Es wird mit einem Standardpfad initialisiert, der aus der Umgebungsvariablen PYTHONPATH stammt, oder mit einem integrierten Standardpfad, wenn PYTHONPATH nicht festgelegt ist. Sie können es mit Standardlistenoperationen ändern:

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

Beantworten Sie Ihre ursprüngliche Frage zum Abrufen und Einstellen des aktuellen Verzeichnisses:

>>> 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
quelle
Diese Antwort ist Gold. import sys sys.path.append('/home/g/PycharmProjects/your_project/')
Fügen Sie
6

Der einfachste Weg, das aktuelle Arbeitsverzeichnis in Python zu ändern, ist das Paket 'os'. Unten finden Sie ein Beispiel für einen Windows-Computer:

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

# Use '\\' while changing the directory 
os.chdir("C:\\user\\foldername")
Sambeet
quelle
Verwendung von "\\" und Erläuterung des Windows-Computers. Ich stimme jedoch zu, dass die akzeptierte Antwort aussagekräftiger ist.
Sambeet
4

Wenn Sie verwenden import oskönnen os.getcwd, um das aktuelle Arbeitsverzeichnis abzurufen, und Sie können verwenden os.chdir, um Ihr Verzeichnis zu ändern

Deontologe
quelle
0

Sie können dies versuchen:

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
quelle