Команда cd в IPython против Spyder

Я знаю, что многие из приглашений рабочего каталога, которые работают в IPython, также работают в Spyder, если они предваряются%.

Например, pwd и ls работают в IPython, но для запуска одних и тех же команд в Spyder они должны быть предварены с помощью%, например: %pwd и %ls.

Чтобы изменить каталог в IPython, я могу запустить команду cd, например: cd C:\Users\... ОДНАКО, это не работает в Spyder, даже если у вас есть%. Какие-либо предложения?

Я знаю, что os.chdir ('C:\\Users\\') работает, просто пытаясь понять, почему %cd C:\Users\ не...

Ответ 1

При запуске %foo эта команда запускается в новом экземпляре оболочки, запущенном как собственный процесс. Когда эта оболочка выходит, изменения в ее состоянии (например, ее рабочий каталог) теряются вместе с ней; они не влияют на родительский процесс Python, который породил его.

Это то же самое, что запуск sh -c 'cd /' не изменяет текущий рабочий каталог в оболочке. (Действительно, запуск нового процесса как sh -c "$some_command" - это именно то, как работает библиотека стандартного C system(some_command), и его эквивалент Python os.system(some_command)).