Як знати / змінити поточний каталог в оболонці Python?


219

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


Це вже обговорювалося [тут] [1]: stackoverflow.com/questions/431684/how-do-i-cd-in-python
mudda

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редакторські модулі. Я думаю, що ім'я було б однакове під Windows, але не знаю, як змінити.

редагувати

У 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


Ви маєте право відредагувати своє запитання, щоб додати пропозицію щодо 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: \ Користувачі \ Ajeya \ Документи \') ^ 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('..')
Зубочистка Anemone

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

Насправді, os.system()можна виконати будь-яку команду, яку може виконати командна команда Windows, а не просто змінити dir.


Файл "<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")

використання "\\" та пояснення щодо комп'ютера Windows. Але я згоден, що прийнята відповідь є більш описовою.
sambeet

4

Якщо ви import osможете використовувати os.getcwdдля отримання поточного робочого каталогу, ви можете використовувати os.chdirдля зміни свого каталогу


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"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.