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

Can't have access to the file in Datalab's container from Jupyter python cell

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

我的笔记本有一些文本处理例程,它从与笔记本本身位于同一目录中的文本文件加载停用词列表。 但是当我尝试从 python 代码访问 /content 目录中的文件之一时,我收到错误 'File does not exist':

>>> 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 目录中的文件?

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

在 GCP 上使用 Datalab 时,我发现 !hostname 显示了 Datalab 网关的主机名。如果我使用 Datalab local setup, I see the hostname of my local container. Using the Datalab local setup, I can access local files and see the content folder when I run !ls. One potential work around for accessing files when using Datalab on GCP is to use Google Cloud Storage. There is an example at the following link 这可能会有帮助。

或许也可以 运行 'git checkout' 来自一个单元格。这原则上会将您的 txt 文件放入主机虚拟机中,您可以为此调整路径。

考虑到 GPC 上的 git 接口存在问题,我们不得不在 Datalab 的 AppEng 部署版本上进行各种类似的修改。不是完美的解决方案。

此外,似乎 gsutil CLI 调用在 %%bash 的单元格中可用。您可以将文件放在存储桶上,然后使用 gsutil

在 VM 中复制