无法从 Jupyter python 单元访问 Datalab 容器中的文件



我成功地将数据从已弃用的Cloud Datalab Deployer迁移到使用GCP的docker Datalab容器。我使用的是MacOS,我可以看到我的主目录连接到容器的/content目录。所以我的笔记本可以在Datalab Jupyter界面上访问。

我的笔记本有一些文本处理例程,它从与笔记本本身位于同一目录的文本文件中加载一个停止词列表。但是当我试图从python代码访问/content目录中的一个文件时,我收到一个错误"文件不存在":

>>> stopwords_full = load_stopwords_from_file('./stopwords/verylong_words_list.txt')
IOError: File ./stopwords/verylong_words_list.txt does not exist

实际上,当我运行ls命令时,我看不到/content目录及其所有子文件等:

>>> !ls
bin  dev   lib    mnt       proc  sbin  sys    usr
boot     etc   lib64  node_modules  root  srcs  tmp    var
datalab  home  media  opt       run   srv   tools

在旧版本的Datalab中,我没有这样的错误。

我如何从Datalab Jupyter python单元格中使用容器的/content目录中的文件?

也许还可以从单元格中运行'git checkout'。这将把你的txt文件放在主机虚拟机中,你可以调整你的路径。

考虑到GPC上的git接口有很多bug,我们不得不在appen部署的Datalab版本上做各种类似的hack。这不是一个完美的解决方案。

此外,似乎gsutil CLI调用在具有%%bash的单元格中可用。你可以把文件放到一个桶里然后用gsutil

复制到VM里

添加我的评论作为答案,这样它就不会显示为未回答的问题:

在GCP上使用数据库时,我发现!hostname显示了数据库网关的主机名。如果我使用Datalab本地设置,我将看到本地容器的主机名。使用Datalab本地设置,当我运行!ls时,我可以访问本地文件并查看内容文件夹。在GCP上使用Datalab访问文件时,一个潜在的解决方案是使用谷歌云存储。下面的链接中有一个示例,可能会对您有所帮助。

最新更新