首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoLab访问文件

CoLab访问文件
EN

Stack Overflow用户
提问于 2018-12-06 14:19:37
回答 3查看 7.7K关注 0票数 3

我可以在CoLab中运行jupyter笔记本,这是很棒的,但是我会疯狂地保存和加载文件。例如,我正在为我的课程编写一份作业,并使用HTML标记在其中包含数字。(我希望使用HTML,而不是标记图像,这样就可以设置宽度。)所以在一个文本单元格里

代码语言:javascript
复制
<img src="CoLab04.png" width="250">

当我在笔记本电脑上运行jupyter笔记本时,它可以很好地工作,但是在CoLab中,即使图像与文件位于同一个CoLab文件夹中,它也找不到图像。错误。

我在保存数据文件方面也有类似的问题。在我的笔记本电脑上,我可以使用普通的python函数openwriteclose等。代码运行时没有抱怨,但是文件不会出现在Google上。当我搜索我所有的Google时,不会在CoLab文件夹或任何其他文件夹中。错误。我读TFM并使用

代码语言:javascript
复制
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文件如此困难?

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

EN

回答 3

Stack Overflow用户

发布于 2019-05-01 06:01:01

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

按以下代码挂载My Drive之后

代码语言:javascript
复制
from google.colab import drive
drive.mount('/content/drive/')

然后,您的主要谷歌驱动器可以阅读与

代码语言:javascript
复制
!ls /content/drive/My Drive/

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

代码语言:javascript
复制
import sys
sys.path.append("/content/drive/My Drive/projectA")

然后,您应该能够按照您在本地机器根路径中使用的方式保存您的无花果。该文件将保存到运行colab代码的projectA文件夹中。

代码语言:javascript
复制
fig.savefig("LED12.png")

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

代码语言:javascript
复制
working_path = '/content/drive/My Drive/projectA'
fig.savefig(os.path.join(working_path, "LED12.png"))
票数 3
EN

Stack Overflow用户

发布于 2018-12-06 16:26:34

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

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

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

第一个图的标记引用:

代码语言:javascript
复制
![](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 ...命令,以便一次性将整个repo引入其中。

在GitHub中这样做比在驱动器中更简单,原因是GitHub在存储层上统一了ACL,而驱动器在文件级别管理ACL。因此,让一个驱动器笔记本公开共享,引用的图像或其他驱动器文件,没有被共享,这将是有点麻烦。

票数 2
EN

Stack Overflow用户

发布于 2018-12-06 18:33:52

几天前,我在Colab (阅读、训练我的模型和上传我受过训练的模型)做了这件事。让我们简单一点。请执行以下步骤。我试图涵盖这两个(读取csv以及上传文件)。

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

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

代码语言:javascript
复制
!pip install pydrive

步骤3 :运行以下访问Google的命令

代码语言:javascript
复制
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

步骤4 :挂载驱动器(在这里您将获得Colab中的链接)。单击生成的链接并验证您的google驱动器(只需复制和粘贴生成的代码)

代码语言:javascript
复制
from google.colab import drive
drive.mount('/content/drive/')

步骤5 :验证和创建PyDrive客户端。这里的操作类似于步骤4(单击生成的链接并验证您的google驱动器(只需复制和粘贴生成的代码))

代码语言:javascript
复制
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)放在下面,并执行相同的操作,即要读取多少个文件。

代码语言:javascript
复制
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 :现在,您可以读取这些文件并加载到数据文件中以供进一步使用。

代码语言:javascript
复制
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:在培训您的模型之后,将模型保存到磁盘:使用

代码语言:javascript
复制
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链接。我希望它能帮助你解决你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53653429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档