Google colaboratory 将本地文件导入google colab

Google colaboratory 将本地文件导入google colab,google-colaboratory,Google Colaboratory,我不明白colab是如何处理目录的,我创建了一个笔记本,colab将它放在/googledrive/colab笔记本中 现在我需要导入一个文件(data.py),其中有一系列我需要的函数。直觉告诉我将文件放在同一个目录中,并使用以下方法导入: 导入数据 但显然不是这样的 我还尝试将目录添加到路径集,但指定的目录不正确 有人能帮忙吗 提前谢谢 Colab笔记本电脑存储在Google Drive上。但它是在另一个虚拟机上运行的。因此,您也需要将data.py复制到那里。这样做可以通过Colab上传d

我不明白colab是如何处理目录的,我创建了一个笔记本,colab将它放在/googledrive/colab笔记本中

现在我需要导入一个文件(data.py),其中有一系列我需要的函数。直觉告诉我将文件放在同一个目录中,并使用以下方法导入:

导入数据

但显然不是这样的

我还尝试将目录添加到路径集,但指定的目录不正确

有人能帮忙吗


提前谢谢

Colab笔记本电脑存储在Google Drive上。但它是在另一个虚拟机上运行的。因此,您也需要将data.py复制到那里。这样做可以通过Colab上传data.py

from google.colab import files
files.upload()
# choose the file on your computer to upload it then
import data

将本地文件从系统上载到协作存储/目录。

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()

所以,我终于解决了这个问题。但是,我必须指出,在我的例子中,我必须处理几个一直在变化的文件和专有模块

我发现最好的解决方案是使用FUSE包装器将colab“链接”到我的google帐户。我使用了这个特殊的工具:

这里有一个如何在那里设置环境的示例,但下面是我如何做到的:

# Install a Drive FUSE wrapper.
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse


# Generate auth tokens for Colab
from google.colab import auth
auth.authenticate_user()
# Generate creds for the Drive FUSE library.
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
这个!ls命令将打印目录内容,以便您可以检查它的工作情况,仅此而已。现在,您已经拥有了所需的所有文件,可以对它们进行更改,而无需进一步复杂化。请记住,您可能需要重新启动内核以更新导入和变量


希望这对某人有用

要轻松上传本地文件,您可以使用新的Google Colab功能:

  • 点击屏幕左侧的右箭头(在谷歌地图下方) Colab标志)
  • 选择文件选项卡
  • 点击上传按钮

它将打开一个弹出窗口,选择要从本地文件系统上载的文件。

现在谷歌正式提供了对访问和使用Gdrive的支持

您可以使用以下代码将驱动器装载到Colab:

from google.colab import drive
drive.mount('/gdrive')
%cd /gdrive/My\ Drive/{location you want to move}

您可以在colab中编写以下命令来安装驱动器

from google.colab import drive 
drive.mount('/content/gdrive') 
您可以通过简单的linux命令wget将一些外部url下载到驱动器中,如下所示

!wget 'https://dataverse.harvard.edu/dataset'

谢谢,效果很好。。。如果在本地对data.py进行更改,如何在colab中更新它?我再次上传,但它没有更新。。。另外,有没有办法在colab中编辑.py文件?您可能需要先用
删除旧版本!rm data.py
,然后再次上载。您可能还需要
导入importlib
导入importlib.reload(data)
。@Danf您可以使用神奇的函数
%load filename.py
在代码单元格中获取文件的内容并在那里编辑它。谢谢,我会尝试一下。。。你认为这比使用驱动器保险丝包装好吗?我正在寻找最有效的方法来设置我的环境…@Laura您可以使用zip/unzip一次性管理1000个文件。如果你真的想让它自动运行,可以选择pydrive、git clone和wget。你可以将代码上传到github,并在colabout中使用git clone,但我发现如果你需要处理大量不断变化的文件,用包装器链接Google drive会更好。当某些事情发生变化时,你所需要做的就是重新启动内核。你能回答这个问题吗?是的,我只需要找到我的代码,因为已经有一段时间了,从那以后我就不再使用colab了……发布了我的答案和我使用的工具!是的,我看到这个方法也很好。但是我的回答也不能被拒绝,因为对于同一个解决方案有不同的方法。它工作得很好,但是每次我们想要运行代码时,我们都应该再次上传它。有没有更简单的方法来访问这些文件?我想应该是
!cd/gdrive/My\Drive/{location you want move}
而不是
%cd/gdrive/My\Drive/{location you want move}
如果对python代码和shell脚本使用相同的单元格,那么对shell命令使用
%
。否则,您将得到一个错误<代码>仅在代码单元中有shell脚本时才起作用。
!wget 'https://dataverse.harvard.edu/dataset'