cd对!IPython中的cd与%cd

2024-06-12 03:03:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我认为在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

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

^{pr2}$

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


Tags: in命令目录homeforobject系统ipython
1条回答
网友
1楼 · 发布于 2024-06-12 03:03:51

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

当您执行!cd操作时,您将启动一个新的shell,它将更改其当前的工作目录并立即关闭。这对IPython或启动IPython的shell没有任何影响。在

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

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

相关问题 更多 >