Невозможно изменить каталог с помощью команды "cd", когда она выполняется внутри ячейки в блокноте Jupyter - PullRequest
1 голос
/ 30 января 2020

Я использую ноутбук Python на виртуальной машине Google Cloud Platform.

Я пытался изменить каталог, запустив этот код внутри ячейки в ноутбуке Jupyter.

print(user_path)

/home/praveen

!pwd
!cd '{user_path}'
!pwd

/home/jupyter

/home/jupyter

Как видно выше, путь то же самое после выполнения команды cd. Это ограничение в Jupyter?

1 Ответ

1 голос
/ 30 января 2020

Да, это правильное поведение для Jupyter. Все команды ! выполняются в своей собственной подоболочке, поэтому результат не является постоянным. Вы можете сделать то, что вам нужно, более длительным способом, добавив вместо этого префикс %:

In [0] : !pwd
/Users/z4
In [1] : %cd ..
/Users
In [2] : %pwd
'/Users'
In [3] : !pwd
/Users

Я бы не стал полагаться на это ни для чего, кроме интерактивных сеансов, для удобства. Если вам нужен сценарий оболочки, напишите сценарий оболочки. Чтобы использовать %, вам нужно включить «automagi c» (что должно быть по умолчанию).

Вы также можете обойти это в некоторой степени, просто заставив все команды оболочки выполняться в одной и той же оболочке:

In [0] : !pwd && cd .. && pwd
/Users/z4
/Users
In [1] : !pwd
/Users/z4

В этом случае Jupyter передает все после ! к оболочке, и это оболочка, которая интерпретирует && обычным способом. Это хак (как и первое решение), поэтому, пожалуйста, будьте осторожны с полученным поведением.

...