from google.colab import files
def getLocalFiles():
_files = files.upload()
if len(_files) >0:
for k,v in _files.items():
open(k,'wb').write(v)
getLocalFiles()
我也面临同样的问题。在阅读了大量文章之后,我想介绍一下我最终选择的解决方案,而不是其他方法(例如使用 urllib、 httpimport、从 GitHub 克隆、打包安装模块等)。该解决方案利用 Google Drive API(官方文件)进行适当的授权。
优点:
简单而安全(不需要代码来处理文件操作异常和/或额外的授权)
模块文件由 Google 帐户凭证保护(其他人不能查看/接受/编辑它们)
您可以控制上传/访问内容(您可以在任何时候逐个文件地更改/撤销访问)
一切都在一个地方(不需要依赖或管理另一个网络硬盘)
可以自由地重命名/重定位模块文件(不是基于路径的,也不会破坏/其他人的笔记本代码)
步骤:
把你的. py 模块文件保存到 Google Drive-你应该有这个,因为你已经在使用 Colab 了
右键点击“获取共享链接”,复制“ id=”后面的部分-由 Google Drive 分配的文件 ID
在 Colab 笔记本中添加并运行以下代码片段:
!pip install pydrive # Package to use Google Drive API - not installed in Colab VM by default
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth # Other necessary packages
from oauth2client.client import GoogleCredentials
auth.authenticate_user() # Follow prompt in the authorization process
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
your_module = drive.CreateFile({"id": "your_module_file_id"}) # "your_module_file_id" is the part after "id=" in the shareable link
your_module.GetContentFile("your_module_file_name.py") # Save the .py module file to Colab VM
import your_module_file_name # Ready to import. Don't include".py" part, of course :)
边注
最后但并非最不重要的,我应该赞扬这种方法的 原始供稿人。这篇文章可能有一些输入错误的代码,因为它触发了一个错误,当我尝试它。经过更多的阅读和故障排除之后,我上面的代码片段起作用了(截至今天在 Colab VM OS: Linux 4.14.79上)。
# Code to read file into colaboratory:
!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
#Autheticate E-Mail ID
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
#2.1 Get the file
your_module = drive.CreateFile({"id": 'write your file id here'}) # "your_module_file_id" is the part after "id=" in the shareable link
your_module.GetContentFile("write the file name here") # Save the .py module file to Colab VM
import file_name
from file_name import anything #as classes or functions from your file