在 Google Colab 上的 Jupyter Notebooks 中,使用 % 和 ! 运行shell命令?

roc*_*ves 3 ipython jupyter google-colaboratory

问题在标题中。

我知道这%通常表示 IPython 中的“魔法变量”。这不是我非常熟悉的概念,但我已经读过它。

但是,今天我看到了一个教程,其中有人使用它来运行 shell 命令。通常我见过并使用过!.

有区别吗?当我尝试它们时,两者似乎都在做同样的事情。

jak*_*vdp 6

区别在于:

  • 当您使用 运行命令时!,它会直接在子 shell 中执行 bash 命令。

  • 当您使用 运行命令时%,它会执行IPython 中定义的魔法命令之一。

IPython 定义的一些魔法命令故意镜像 bash 命令,但它们在实现细节上有所不同。

例如,运行!cdbash 命令不会持续更改您的目录,因为它在临时子 shell 中运行。但是,运行%cd魔法命令将持续更改您的目录:

!pwd
# /content

!cd sample_data/
!pwd
# /content

%cd sample_data/
!pwd
# /content/sample_data
Run Code Online (Sandbox Code Playgroud)

IPython:内置魔法命令中阅读更多内容。

  • 完美的。我刚刚注意到`!cd` 实际上并没有在您回答之前更改我的目录。现在我知道为什么了! (3认同)