gpt4 book ai didi

python - IPython 中的 cd 与 !cd 与 %cd

转载 作者:太空狗 更新时间:2023-10-30 00:31:33 29 4
gpt4 key购买 nike

我认为在 IPython 中使用 ! 前缀的 shell 命令会使系统 shell 实际执行该命令,但似乎并非如此。考虑以下情况,我从 /home/Documents/Rx 开始,启动 IPython,使用命令 cd(没有 !),然后退出 IPython 并查看我在哪个目录中:

$ pwd
/home/Documents/Rx
$ ipython
Python 2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Dec 6 2015, 18:08:32)
Type "copyright", "credits" or "license" for more information.

IPython 4.0.3 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.

In [1]: cd Papers/
/home/Documents/Rx/Papers

In [2]: pwd
Out[2]: u'/home/Documents/Rx/Papers'

In [3]: exit()
$ pwd
/home/Documents/Rx

如您所见,我实际上并没有更改目录;仅在 IPython shell 中。我认为这是因为我没有在 IPython 中使用 !cd,但这也不起作用:

$ pwd
/home/Documents/Rx
$ ipython
Python 2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Dec 6 2015, 18:08:32)
Type "copyright", "credits" or "license" for more information.

IPython 4.0.3 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.

In [1]: !cd Papers/

In [2]: pwd
Out[2]: u'/home/Documents/Rx'

In [3]: exit()
$ pwd
/home/Documents/Rx

请注意,在这种情况下,IPython shell 也没有更改目录;但我本以为实际的 shell 会这样做。最后,使用魔术命令 %cdcd 具有相同的效果。那么,这三者之间有什么区别,我怎样才能真正告诉系统 shell 在 IPython 中执行命令?

最佳答案

!command 不会让“shell”运行命令。它使 a shell 运行命令。这不是您运行 IPython 的 shell;你不能从 IPython 向那个 shell 发送命令。这是一个新的外壳。

当您执行 !cd 时,您会启动一个新的 shell,它会更改自己的当前工作目录并立即关闭。这对 IPython 或您从中启动 IPython 的 shell 没有影响。

当您执行cd%cd 时,您告诉IPython 更改它自己的工作目录。这将在您的 IPython session 期间持续存在,但它仍然对您启动 IPython 的 shell 没有影响。当您停止 IPython 时,该 shell 仍将位于您启动 IPython 时所在的目录中。

您不能从 IPython 更改父 shell 的工作目录。

关于python - IPython 中的 cd 与 !cd 与 %cd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512527/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com