谷歌colaboratory和谷歌云之间的接口

时间:2018-02-28 03:22:59

标签: python google-cloud-platform google-cloud-storage jupyter-notebook google-colaboratory

来自google colaboratory,如果我想读取/写入google云中创建的给定存储桶中的文件夹,我该如何实现?

我创建了一个存储桶,存储桶中的文件夹以及上传了一堆图像。现在来自colaboratory,使用jupyter笔记本,想要创建多个子目录,将这些图像组织成火车,验证和测试文件夹。

随后访问相应的文件夹以进行培训,验证和测试模型。

使用Google云端硬盘,我们只需在认证后使用以下命令更新指向特定目录的路径。

import sys
sys.path.append('drive/xyz')

我们在桌面版上做了类似的事情

import os
os.chdir(local_path)

Google云端存储是否存在类似情况?

我是colaboratory常见问题解答,它有读写单个文件的程序,我们需要设置整个路径。将主目录重新组织到子目录中并单独访问它们将非常繁琐。

1 个答案:

答案 0 :(得分:4)

一般来说,尝试在本地计算机上安装GCS存储桶并不是一个好主意(这将允许您按照您的提及使用它)。来自Connecting to Cloud Storage buckets

  

注意:云存储是一个没有的对象存储系统   与POSIX文件系统相同的写约束。如果你写数据   您可以同时从多个来源同时访问云存储中的文件   可能会无意中覆盖关键数据。

假设您想要继续而不管警告,如果您使用Linux操作系统,您可以使用Cloud Storage FUSE适配器安装它。请参阅相关的How to mount Google Bucket as local disk on Linux instance with full access rights

从python应用程序访问GCS的推荐方法是使用Cloud Storage Client Libraries,但访问文件会有所不同 而不是你的片段。您可以在Python Client for Google Cloud Storage找到一些示例:

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body>

  <div ng-app="myApp">

  <div ng-controller="MyCtrl">
  Hello, {{value}}!
</div>
  </div>
</body>

</html>

<script>
var myApp = angular.module('myApp',[]);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

/* function MyCtrl($scope) {
    $scope.name = 'Superhero';
} */

myApp.service('CalcService', function(){
   this.square = function(x) {

   var y = x*x;
      return y;
   }
});
myApp.controller('MyCtrl', ['$scope','CalcService', function($scope, CalcService) {
var cheese = CalcService.square(2);
  $scope.value = cheese;
  
}]);


</script>

</body>

</html>

<强>更新

Colaboratory文档基于Google API Client Library for Python推荐了我忘记的另一种方法,但请注意它也不像常规文件系统那样运行,它使用本地文件系统上的中间文件: