从Google Storage Cloud读取数据到Google Cloud Datalab奇怪的错误

问题描述 投票:2回答:1

我正在尝试将谷歌存储云中的csv文件读取到Google Cloud Datalab,就像在qazxsw poi中建议的那样。

我一直收到错误:源对象gs://analog-arbor-233411/traissn.csv不存在。 (analog-arbor-233411是我的桶名,traissn.csv是我的csv文件。

所以在这里我检查了存储桶确实存在,它确实存在。

here

在这里,我甚至遍历mybucket.objects(),它为存储桶中的对象提供了一个迭代器,以确保我获得一个现有的对象。所以data_csv_meta只接受迭代中的最后一个对象。然后我再次检查它是否存在,当然可以!

import google.datalab.storage as storage
mybucket = storage.Bucket('analog-arbor-233411')
mybucket.exists()

这是一件有趣的事情。当我运行以下内容时,我得到错误源对象gs://analog-arbor-233411/traissn.csv不存在(我的对象名在data_csv traissn.csv中)

for i in mybucket.objects():
    data_csv = i
data_csv.exists()

试图到处寻找,但无法得到答案。

python google-cloud-platform google-cloud-storage google-cloud-datalab
1个回答
1
投票

在您当前的代码中,uri = data_csv.uri %gcs read --object $uri --variable data data_csv.exists()循环之外被调用,因此它仅返回桶迭代器返回的最后一个for对象的结果,该对象可能是也可能不是data_csv

所以要么:

  • 如果traissn.csv指向for,则在break循环内添加data_csv语句,以便traissn.csv保持不变
  • 在for循环中调用data_csv
© www.soinside.com 2019 - 2024. All rights reserved.