我正在尝试完全按照 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()
这是一件有趣的事情。当我运行以下命令时,出现错误 Source object gs://analog-arbor-233411/traissn.csv does not exist (my object name in data_csv traissn.csv)
uri = data_csv.uri
%gcs read --object $uri --variable data
四处寻找,却找不到答案。
最佳答案
在您当前的代码中,data_csv.exists()
是在 for
循环之外调用的,因此它只返回最后一个 data_csv
的结果> 桶迭代器返回的对象,可能是也可能不是 traissn.csv
。
所以要么:
- 如果
data_csv
指向traissn.csv
,则在for
循环中添加一个break
语句,以便data_csv
保持不变 - 在 for 循环中调用
gcs
关于python - 从 Google Storage Cloud 读取数据到 Google Cloud Datalab 奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55090088/