Google Colab - 调用系统命令

Jupyter 包含许多常见系统操作的快捷方式。Colab Code 单元支持此功能。

简单命令

在使用系统命令 echo 的代码单元中输入以下代码。

message = 'A Great Tutorial on Colab by Tutorialspoint!'
greeting = !echo -e '$message
$message'
greeting

现在,如果您运行该单元,您将看到以下输出 −

['A Great Tutorial on Colab by Tutorialspoint!', 'A Great Tutorial on Colab by Tutorialspoint!']

获取远程数据

让我们看另一个从远程服务器加载数据集的示例。在代码单元格中输入以下命令 −

!wget http://mlr.cs.umass.edu/ml/machine-learning-databases/adult/adult.data -P "/content/drive/My Drive/app"

如果运行代码,您将看到以下输出 −

--2019-06-20 10:09:53-- http://mlr.cs.umass.edu/ml/machine-learning-databases/adult/adult.data
Resolving mlr.cs.umass.edu (mlr.cs.umass.edu)... 128.119.246.96
Connecting to mlr.cs.umass.edu (mlr.cs.umass.edu)|128.119.246.96|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 3974305 (3.8M) [text/plain] 
Saving to: ‘/content/drive/My Drive/app/adult.data.1’

adult.data.1 100%[===================>] 3.79M 1.74MB/s in 2.2s

2019-06-20 10:09:56 (1.74 MB/s) - ‘/content/drive/My Drive/app/adult.data.1’ saved [3974305/3974305]

如消息所示,adult.data.1 文件现已添加到您的驱动器中。您可以通过检查驱动器的文件夹内容来验证这一点。或者,在新的代码单元中输入以下代码 −

import pandas as pd
data = pd.read_csv("/content/drive/My Drive/app/adult.data.1")
data.head(5)

立即运行代码,您将看到以下输出 −

获取远程数据

同样,大多数系统命令都可以通过在命令前面加上感叹号 (!) 来在代码单元中调用。在给出您可以调用的完整命令列表之前,让我们先看另一个示例。

克隆 Git 存储库

您可以使用 git 命令将整个 GitHub 存储库克隆到 Colab 中。例如,要克隆 keras 教程,请在代码单元格中输入以下命令 −

!git clone https://github.com/wxs/keras-mnist-tutorial.git

成功运行命令后,您将看到以下输出 −

Cloning into 'keras-mnist-tutorial'...
remote: Enumerating objects: 26, done.
remote: Total 26 (delta 0), reused 0 (delta 0), pack-reused 26
Unpacking objects: 100% (26/26), done.

克隆存储库后,在其中找到一个 Jupyter 项目(例如 keras.ipyab 中的 MINST),右键单击文件名并选择 Open With / Colaboratory 菜单选项以在 Colab 中打开该项目。

系统别名

要获取常用操作的快捷方式列表,请执行以下命令 −

!ls /bin

您将在输出窗口中看到列表,如下所示 −

bash*             journalctl*       sync*
bunzip2*          kill*             systemctl*
bzcat*            kmod*             systemd@
bzcmp@            less*             systemd-ask-password*
bzdiff*           lessecho*         systemd-escape*
bzegrep@          lessfile@         systemd-hwdb*
bzexe*            lesskey*          systemd-inhibit*
bzfgrep@          lesspipe*         systemd-machine-id-setup*
bzgrep*           ln*               systemd-notify*
bzip2*            login*            systemd-sysusers*
bzip2recover*     loginctl*         systemd-tmpfiles*
bzless@           ls*               systemd-tty-ask-password-agent*
bzmore*           lsblk*            tar*
cat*              lsmod@            tempfile*
chgrp*            mkdir*            touch*
chmod*            mknod*            true*
chown*            mktemp*           udevadm*
cp*               more*             ulockmgr_server*
dash*             mount*            umount*
date*             mountpoint*       uname*
dd*               mv*               uncompress*
df*               networkctl*       vdir*
dir*              nisdomainname@    wdctl*
dmesg*            pidof@            which*
dnsdomainname@    ps*               ypdomainname@
domainname@       pwd*              zcat*
echo*             rbash@            zcmp*
egrep*            readlink*         zdiff*
false*            rm*               zegrep*
fgrep*            rmdir*            zfgrep*
findmnt*          run-parts*        zforce*
fusermount*       sed*              zgrep*
grep*             sh@               zless*
gunzip*           sh.distrib@       zmore*
gzexe*            sleep*            znew*
gzip*             stty*
hostname*         su*

执行这些命令中的任何一个,就像我们对 echowget 所做的那样。在下一章中,我们将了解如何执行您之前创建的 Python 代码。