2013-06-28 4 views
21

Когда я запускаю следующий сценарий в IDLEКак получить текущий рабочий каталог с помощью python 3?

import os 
print(os.getcwd()) 

я получаю выход как

D:\testtool 

, но когда я бегу из CMD проворная, я получаю

c:\Python33>python D:\testtool\current_dir.py 
c:\Python33 

Как получить тот же результат, который я получил с помощью IDLE?

ответ

30

Похоже, что IDLE изменяет текущую рабочую директорию на местоположение исполняемого скрипта, а при запуске скрипта с использованием cmd этого не происходит, и он оставляет CWD как есть.

Чтобы изменить текущий рабочий реж на содержащий сценарий вы можете использовать:

import os 
os.chdir(os.path.dirname(__file__)) 
print(os.getcwd()) 

Переменная __file__ доступна только при выполнении сценария из файла, и он содержит путь к файлу. Подробнее об этом здесь: Python __file__ attribute absolute or relative?

3
import pathlib 

current_dir = pathlib.Path(__file__).parent 
current_file = pathlib.Path(__file__) 

Doc исх: link

+1

дать правильное описание вашего ответа –