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

时间:2019-03-10 16:53:20

标签: python google-cloud-platform google-cloud-storage google-cloud-datalab

我正试图像here中所建议的那样,将csv_file从Google Storage Cloud读取到Google Cloud Datalab。

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

所以在这里,我检查了存储桶是否确实存在,并且确实存在。

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

在这里,我什至遍历了mybucket.objects(),它为存储桶中的对象提供了一个迭代器,以确保获得现有对象。因此,data_csv_meta仅采用迭代中的最后一个对象。然后我再次检查它是否存在,并且肯定会存在!

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

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

uri = data_csv.uri
%gcs read --object $uri --variable data

试图四处查看,但找不到答案。

1 个答案:

答案 0 :(得分:1)

在当前代码中,data_csv.exists()for循环之外被调用,因此它仅返回存储桶迭代器返回的最后一个data_csv对象的结果,该结果可能会或可能不会是traissn.csv

所以:

  • 如果for指向break,则在data_csv循环中添加一条traissn.csv语句,以使data_csv保持不变
  • 在for循环内进行gcs调用