2015-01-01 4 views
6

В IPython nb можно ли программным образом установить рабочий каталог в каталог ноутбука?Установите рабочий каталог в каталог ноутбуков

Например, следующий код будет работать в обычном файле .py.

import os 
# show working dir 
os.chdir(os.path.abspath('/')) 
print "initial working directory:\t", os.getcwd() 

# get path of script file 
scriptPath = os.path.abspath(os.path.dirname(__file__)) 

# change working dir to dir with script file 
os.chdir(scriptPath) 

# show working directory 
print "final working directory:\t", os.getcwd() 

Однако, я не могу найти эквивалент переменной в

__file__ 

для IPython файла нб. Есть ли эквивалентный подход для файлов ipynb?

ответ

7

iPython notebook автоматически переключает каталог на тот же файл .ipynb. Вы хотите изменить этот каталог и затем изменить его позже? Если это так, просто сохраните исходный каталог в начале программы и используйте его всякий раз.

import os 
orig_dir = os.getcwd() 
os.chdir('/some/other/directory') 
#do stuff 
os.chdir(orig_dir) 

EDIT: Там, как представляется, специальная переменная _dh, что список таких, что _dh[0] содержит имя каталога, в котором была запущена IPython ядро. Я только что открыл это, поэтому я не уверен, что это будет надежным для SaveAs (я не могу найти способ сделать это в своей версии iPython). Тем не менее, это не изменяется, когда я делаю os.chdir(), поэтому я подозреваю, что по крайней мере первый элемент списка всегда содержит каталог ноутбука.

+0

Chinmay, большое спасибо. Да, совершенно правильно. Однако это не является надежным для File SaveAs, который изменяет каталог. Я надеялся на что-то более сильное, если бы оно существовало. – pjc42

+0

Chinmay, я всегда могу просто открыть nb, чтобы это работало. Если ничего более программного не появится в ближайшее время, я пойду дальше и приму ваш ответ. Независимо от того, спасибо за ответ. – pjc42

+0

Это не полное решение, но работает для большинства обстоятельств, спасибо. – pjc42

Смежные вопросы