Как узнать / изменить текущий каталог в оболочке Python?

219

Я использую Python 3.2 в Windows 7. Когда я открываю оболочку Python, как я могу узнать, что является текущим каталогом, и как я могу изменить его на другой каталог, где находятся мои модули?

astay13
источник
Это уже обсуждалось [здесь] [1]: stackoverflow.com/questions/431684/how-do-i-cd-in-python
мудда
4
@ astay13 - Я думаю, что Игнасио означает, что вы не собираетесь менять каталог на свой путь к модулю. Возможно, вам следует проверить переменную окружения PYTHONPATH.
Симон

Ответы:

299

Вы можете использовать osмодуль.

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

Но если речь идет о поиске других модулей: вы можете установить переменную окружения под названием PYTHONPATH, под Linux будет выглядеть так:

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

Затем интерпретатор также ищет в этом месте importмодули ed. Я думаю, что имя будет таким же под Windows, но не знаю, как изменить.

редактировать

Под виндой:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(взято с http://docs.python.org/using/windows.html )

редактировать 2

... и даже лучше: используйте virtualenvи virtualenv_wrapper, это позволит вам создать среду разработки, в которой вы сможете добавлять пути модулей по своему усмотрению ( add2virtualenv), не загрязняя вашу установку или "нормальную" рабочую среду.

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

вали-O-MAT
источник
Вы правы, чтобы отредактировать свой вопрос, чтобы добавить предложение о PYTHONPATH, но обратите внимание, что ОП указывает Windows ...
Simon
А в чем проблема с PYTHONPATH под Windows? Но я исправил свой ответ.
wal-o-mat
Нужно ли устанавливать PYTHONPATH в командной строке Windows или в оболочке Python?
astay13
2
@ astray13: у вас также есть возможность игнорировать переменную окружения и вместо этого добавлять ее sys.pathвнутрь скрипта.
Стивен Румбальски
3
@ astay13: не устанавливайте PYTHONPATHглобально, если у вас установлено более одного Python (или если у вас установлены программы, которые связывают Python с ними - другими словами, вы никогда не узнаете): это может нарушить вашу установку таинственными способами
jfs
18

вы хотите

import os
os.getcwd()
os.chdir('..')
Саймон
источник
1
os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL при сканировании строкового литерала
AAI
1
@ Как бы то ни было, вам нужно удвоить обратную косую черту, если вы используете их в обычной (не необработанной) строке Python. Python также позволяет вам использовать прямые косые черты. Таким образом, или os.chdir('C:/Users/Ajeya/Documents'), или os.chdir('C:\\Users\\Ajeya\\Documents'), или os.chdir(r'C:\Users\Ajeya\Documents').
Чарльз Даффи
Было бы хорошо отметить, что вы вызываете os.getcwd()только для целей отладки, чтобы мы могли видеть, что такое рабочий каталог, прежде чем мы изменим его. Код для фактического изменения cwdпростоos.chdir('..')
Зубочистка Анемон
15
>>> import os
>>> os.system('cd c:\mydir')

Фактически, os.system()может выполнить любую команду, которую может выполнить командная строка Windows, а не только изменить dir.

shankar_pratap
источник
Файл "<stdin>", строка 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL при сканировании строкового литерала
AAI
6

Изменение текущего каталога не является способом поиска модулей в Python.

Скорее, смотрите документацию по пути поиска модуля, чтобы узнать, как Python находит, какой модуль импортировать.

Вот соответствующий бит из раздела Стандартные модули :

Переменная sys.path представляет собой список строк, который определяет путь поиска интерпретатора для модулей. Он инициализируется путем по умолчанию, взятым из переменной среды PYTHONPATH, или из встроенного значения по умолчанию, если PYTHONPATH не установлен. Вы можете изменить его, используя стандартные операции со списком:

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

В ответ на ваш оригинальный вопрос о получении и настройке текущего каталога:

>>> 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.
Стивен Румбальский
источник
Этот ответ золотой. Просто добавьте каталог вашего проекта так:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r
6

Самый простой способ изменить текущий рабочий каталог в python - использовать пакет 'os'. Ниже приведен пример для компьютера с 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
источник
Использование "\\" и разъяснения о компьютере Windows. Но я согласен, что принятый ответ является более описательным.
Самбит
4

Если вы import osможете использовать, os.getcwdчтобы получить текущий рабочий каталог, и вы можете использовать, os.chdirчтобы изменить свой каталог

deontologician
источник
0

Вы можете попробовать это:

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"

Адитья Н.С.
источник