问题很简单:我在gDrive上有一些数据,例如在/projects/my\u project/my\u data*
上。
我也有一个简单的gColab笔记本。
所以,我想做这样的事情:
for file in glob.glob("/projects/my_project/my_data*"):
do_something(file)
不幸的是,所有的例子(像这样-https://colab.research.google.com/notebook#fileId=/v2/external/notebooks/io.ipynb,例如)建议只将所有必要的数据主要加载到笔记本。
但是,如果我有很多数据,它可能会非常复杂。有没有解决这个问题的机会?
谢谢你的帮助!
谢谢你的回答!从Google drive向Colab获取一些一次性文件的最快方法:加载驱动器助手并装载
from google.colab import drive
这将提示进行授权。
drive.mount('/content/drive')
在新选项卡中打开链接-
!ls "/content/drive/My Drive"
然后根据需要复制文件:
!cp "/content/drive/My Drive/xy.py" "xy.py"
确认已复制文件:
!ls
好消息,PyDrive在CoLab上拥有一流的支持!PyDrive是Google Drive python客户端的包装器。下面是一个如何从文件夹下载所有文件的示例,类似于使用glob:
!pip install -U -q PyDrive
import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
# 1. Authenticate and create the PyDrive client.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
# choose a local (colab) directory to store the data.
local_download_path = os.path.expanduser('~/data')
try:
os.makedirs(local_download_path)
except: pass
# 2. Auto-iterate using the query syntax
# https://developers.google.com/drive/v2/web/search-parameters
file_list = drive.ListFile(
{'q': "'1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk' in parents"}).GetList()
for f in file_list:
# 3. Create & download by id.
print('title: %s, id: %s' % (f['title'], f['id']))
fname = os.path.join(local_download_path, f['title'])
print('downloading to {}'.format(fname))
f_ = drive.CreateFile({'id': f['id']})
f_.GetContentFile(fname)
with open(fname, 'r') as f:
print(f.read())
请注意,驱动器的参数。ListFile
是一个与Google Drive HTTP API使用的参数一致的字典(您可以自定义q
参数以根据您的用例进行调整)。
要知道,在所有情况下,文件/文件夹都是由Google Drive上的id编码的(请查看1SooKSw8M4ACbznKjnNrYvJ5wxuqJ YCk)。这要求您在Google Drive中搜索与要在其中搜索根目录的文件夹对应的特定id。
例如,导航到位于Google Drive中的文件夹"/project/my_project/my_data"
。
请注意,它包含一些我们要下载到CoLab的文件。要获取文件夹的id以便PyDrive使用它,请查看url并提取id参数。在本例中,与文件夹对应的url为:
其中id是url的最后一部分:1SooKSw8M4ACbznKjnNrYvJ5wxuqJ YCk。
编辑:截至2020年2月,现在有一个用于自动安装驱动器的一流UI。
首先,打开左侧的文件浏览器。它将显示“装载驱动器”按钮。单击后,您将看到装载驱动器的权限提示,然后当您返回笔记本时,驱动器文件将不带任何设置。完成的流程如下所示:
原始答案如下。(这也适用于共享笔记本。)
您可以通过运行以下代码段装载Google Drive文件:
from google.colab import drive
drive.mount('/content/drive')
然后,可以在文件浏览器侧面板中或使用命令行实用程序与驱动器文件交互。
下面是一个笔记本示例
问题内容: 嗨,我习惯了SQL,但是我需要从HBase表读取数据。任何帮助都会很棒。一本书,或者只是一些示例代码,可以从表中读取。有人说使用扫描仪可以解决问题,但我不知道如何使用。 问题答案: 从网站:
我试图用以下链接中提供的信息将Cassandra作为Flink中的数据来源: null 异常跟踪-->
https://github.com/googleCloudplatform/java-docs-samples/tree/master/appengine/firebase-tictactoe 错误:
问题内容: 我经常看到人们使用Perl数据结构代替配置文件。即一个仅包含以下内容的独立文件: 使用纯Python将这些文件的内容转换为等效于Python的数据结构的最佳方法是什么?目前,我们可以假设没有要评估的真实表达式,只有结构化数据。 问题答案: 不知道用例是什么。这是我的假设:您将要进行一次从Perl到Python的转换。 Perl有这个 在Python中, 所以,我想这是一堆可替换的RE
问题内容: 当我们处理本地文件时,我想做的事情很简单,但是当我尝试使用远程URL时,问题就来了。 基本上,我试图从URL提取的文件中创建一个PIL图像对象。当然,我总是可以只获取URL并将其存储在临时文件中,然后将其打开到图像对象中,但这感觉效率很低。 这是我所拥有的: 它抱怨说不可用,所以我尝试了这个: 但这也不起作用。有没有更好的方法可以执行此操作,还是可以将这种方式写入临时文件? 问题答案:
问题内容: 有人知道如何从任务中获取数据吗? 问题答案: 您不能直接从异步任务返回数据。 Swift 2的解决方案是使完成处理程序如下所示: 这样,仅当异步任务完成时才调用完成。这是一种无需实际使用即可“返回”数据的方法。 Swift 3版本