问题在标题中。
我知道%
在IPython中通常表示一个"魔术变量"。这不是一个我非常熟悉的概念,但我已经读过了
然而,今天我看到了一个教程,其中有人使用它来运行shell命令。通常情况下,我看到并使用过!
。
有区别吗?当我尝试它们时,它们似乎都在做同样的事情。
区别在于:
-
使用
!
运行命令时,它会直接在子shell中执行bash命令。 -
当您使用
%
运行一个命令时,它会执行IPython中定义的一个神奇命令。
IPython定义的一些魔术命令有意镜像bash命令,但它们在实现细节上有所不同。
例如,运行!cd
bash命令不会持久地更改目录,因为它在临时子shell中运行。但是,运行%cd
魔术命令会持续更改您的目录:
!pwd
# /content
!cd sample_data/
!pwd
# /content
%cd sample_data/
!pwd
# /content/sample_data
阅读更多IPython:内置魔术命令。