【发布时间】:2020-07-02 19:01:51
【问题描述】:
问题在标题中。
我知道% 通常表示 IPython 中的“魔术变量”。这不是我非常熟悉的概念,但我已经阅读过它。
但是,今天我看到一个教程,有人用它来运行 shell 命令。通常我见过并使用过!。
有区别吗?当我尝试它们时,它们似乎都在做同样的事情。
【问题讨论】:
标签: ipython jupyter google-colaboratory
问题在标题中。
我知道% 通常表示 IPython 中的“魔术变量”。这不是我非常熟悉的概念,但我已经阅读过它。
但是,今天我看到一个教程,有人用它来运行 shell 命令。通常我见过并使用过!。
有区别吗?当我尝试它们时,它们似乎都在做同样的事情。
【问题讨论】:
标签: ipython jupyter google-colaboratory
区别是这样的:
使用! 运行命令时,它会直接在子shell 中执行bash 命令。
当您使用 % 运行命令时,它会执行 IPython 中定义的 magic commands 之一。
IPython 定义的一些魔术命令故意镜像 bash 命令,但它们在实现细节上有所不同。
例如,运行!cd bash 命令不会永久更改您的目录,因为它在临时子shell 中运行。但是,运行 %cd 魔法命令将持续更改您的目录:
!pwd
# /content
!cd sample_data/
!pwd
# /content
%cd sample_data/
!pwd
# /content/sample_data
在IPython: Built-in Magic Commands阅读更多内容。
【讨论】:
! cd 在您回答之前实际上并没有更改我的目录。现在我知道为什么了!