CoLab访问文件

时间:2018-12-06 14:19:38

标签: python jupyter-notebook google-colaboratory

能在CoLab中运行jupyter笔记本非常好,但是我疯狂地保存和加载文件。例如,我正在为课程编写作业,并使用HTML标签在其中包含图形。 (我想使用HTML而不是markdown图片,以便可以设置宽度。)因此,在Text单元格中,我有

<img src="CoLab04.png" width="250">

当我在笔记本电脑上运行jupyter笔记本时,此方法工作正常,但在CoLab中,即使图像与ipynb文件位于同一CoLab文件夹中,也找不到图像 强>。错误。

保存数据文件时,我也遇到类似的问题。在我的笔记本电脑上,我可以使用常规的python函数openwriteclose等。该代码可以正常运行,但文件不会显示在Google云端硬盘上。搜索所有Google云端硬盘时,不在CoLab文件夹或其他任何文件夹中。呃。我读了TFM并使用

from google.colab import drive, files
drive.mount('/content/gdrive')
fig.savefig("LED12.png") # saves a figure as a file
files.download("LED12.png")

这会将文件下载到我的笔记本电脑。然后,我必须将文件上传到Google云端硬盘文件夹,以便我的学生可以看到它。

我想念什么吗?为什么使用Google-CoLab jupyter笔记本创建和读取Google云端硬盘文件如此困难?

我已经读过https://colab.research.google.com/notebooks/io.ipynb,但为什么这么难?我需要让新手学生易于使用的东西。如果很难读写文件,我将建议学生们在笔记本电脑上安装jupyter,而不要使用CoLab。

3 个答案:

答案 0 :(得分:1)

从GitHub加载笔记本可能更简单,其中同一存储库中的图像链接将更直观地加载。

例如,下面的笔记本加载一组捆绑在其GitHub存储库中的图像。

https://colab.research.google.com/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/05.01-What-Is-Machine-Learning.ipynb

第一个图表的减价参考:

![](figures/05.01-classification-1.png)
[figure source in Appendix](06.00-Figure-Code.ipynb#Classification-Example-Figure-1)

这对应于此处的GitHub存储库:   https://github.com/jakevdp/PythonDataScienceHandbook/

在此示例的基础上,捆绑数据文件的一种常见模式是在笔记本顶部添加一个!git clone ...命令,以一次注入整个仓库。

与Drive相比,在GitHub中完成此操作更容易的原因是GitHub在重新存储级别上具有统一的ACL,而Drive在文件级别上管理ACL。因此,如果要公开共享一个Drive笔记本来引用未共享的图像或其他Drive文件,将会有些麻烦。

答案 1 :(得分:0)

几天前,我已经在Colab中做到了这一点(阅读,训练模型并上传训练有素的模型)。让我们简单点。 请执行以下步骤。我试图同时覆盖这两个方面(读取csv以及上传文件)。

步骤1::转到您的Google驱动器并创建一个文件夹: Colab ,并将文件保存在Colab文件夹中。

第2步:现在,在Colab jupyter笔记本中安装pydrive

!pip install pydrive

第3步::运行以下命令以访问Google驱动器文件

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

第4步::安装驱动器(您将在Colab jupyter shell中获得一个链接。单击生成的链接并验证您的Google驱动器(只需复制并粘贴生成的代码))

from google.colab import drive
drive.mount('/content/drive/')

步骤5:进行身份验证并创建PyDrive客户端。在这里执行与第4步相同的操作(单击生成的链接并验证您的Google驱动器(只需复制并粘贴生成的代码))

auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

第6步::要获取文件,请将ID替换为您要访问的文件的ID(您的文件ID)。对我来说,这是csv文件。要获取ID,请共享并生成链接。您会发现类似:https://drive.google.com/file/d/ xxxxxxxxxxxxxx / view?usp = sharing。将其放在下面(xxxxxxxxxxxxxx),然后执行相同的操作,即要读取多少文件。

normal_1 = drive.CreateFile({'id':'13AR0sS1pndF0fTxmdjQRv_1Bv5aBNpkT'}) 
normal_1.GetContentFile('normal_1.csv')

normal_2 = drive.CreateFile({'id':'1Z0DO8M1Qco07kyVoxYSgxXBx6XYGBzJd'}) 
normal_2.GetContentFile('normal_2.csv')

abnormal = drive.CreateFile({'id':'12zFHDXVjreorRrHHhYrA1n82VQLuawsl'}) 
abnormal.GetContentFile('abnormal.csv')

第7步:现在,您可以读取这些文件并加载到数据框中以供进一步使用。

normal_1 = pd.read_csv('normal_1.csv', skiprows = np.arange(100, normal_1.shape[0])) 
normal_2 = pd.read_csv('normal_2.csv', skiprows = np.arange(100, normal_2.shape[0])) 
abnormal = pd.read_csv('abnormal.csv', skiprows = np.arange(50, abnormal.shape[0])) 

第8步:训练模型后,将模型保存到磁盘:使用joblib

from sklearn.externals import joblib
filename = 'model.sav'
joblib.dump(clf, filename)

# Upload model to you google drive
model_file = drive.CreateFile({'title' : 'model.sav'})
model_file.SetContentFile('model.sav')
model_file.Upload()

现在,转到“我的驱动器”并刷新它。您将找到“ model.sav”。有关jupyter笔记本文件中的完整代码,请访问我的github链接。我希望它能帮助您解决问题。

答案 2 :(得分:0)

在我看来,这是一个sys.path问题。

通过以下代码安装My Drive

from google.colab import drive
drive.mount('/content/drive/')

然后可以使用读取主Google云端硬盘

!ls /content/drive/My Drive/

如果您希望在My Drive下有一个子文件夹来集中化colab项目,则可以假设您在主Google Drive目录下有projectA文件夹。您可以将projectA文件夹路径添加到sys.path

import sys
sys.path.append("/content/drive/My Drive/projectA")

然后,您应该能够像在本地计算机根路径中一样使用保存无花果的方法。该文件将保存到运行colab代码的projectA文件夹中。

fig.savefig("LED12.png")

您应该能够看到文件出现在此处。如果这不起作用,请在执行opensaveclose等路径敏感操作时尝试使用绝对路径:

working_path = '/content/drive/My Drive/projectA'
fig.savefig(os.path.join(working_path, "LED12.png"))