【问题标题】:In Jupyter Notebooks on Google Colab, what's the difference between using % and ! to run a shell command?在 Google Colab 上的 Jupyter Notebooks 中,使用 % 和 ! 有什么区别?运行一个shell命令?
【发布时间】:2020-07-02 19:01:51
【问题描述】:

问题在标题中。

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

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

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

【问题讨论】:

    标签: ipython jupyter google-colaboratory


    【解决方案1】:

    区别是这样的:

    • 使用! 运行命令时,它会直接在子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 在您回答之前实际上并没有更改我的目录。现在我知道为什么了!
    猜你喜欢
    • 2020-08-30
    • 2020-01-15
    • 1970-01-01
    • 2013-08-11
    • 2019-05-22
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多