【问题标题】:Load local data files to Colaboratory将本地数据文件加载到 Colaboratory
【发布时间】:2018-04-29 10:11:13
【问题描述】:

我只是想知道是否可以将本地数据文件(如我的 google 驱动器上的 .xlsx 或 .csv 文件)加载到 Colaboratory?

【问题讨论】:

  • 自 2020 年 1 月 4 日起,驱动器已被“备份和同步”取代。

标签: python google-colaboratory


【解决方案1】:

乍一看加载本地文件的示例让我有点困惑,因为没有地方可以指定文件路径。您需要做的就是复制并粘贴recipe 来解决这个问题,但要清楚:

from google.colab import files
uploaded = files.upload()

将打开一个上传对话窗口,您可以在其中浏览并选择要上传的本地文件。

然后

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))

将向您显示访问您刚刚上传的内容的密钥。

编辑以进一步澄清:字典 uploaded 将具有所选文件名的键 - 例如,如果您选择一个文件 my_test.txt,那么您将使用 uploaded['my_test.txt'] 访问该文件。

【讨论】:

  • @elphz 如果文件是图像会发生什么?
  • 但是之后如何使用 Python 加载文件?我找不到一个例子。
  • 我遇到了与 ivan_billan 相同的问题。 “上传”没问题,但没有实际示例说明之后如何访问上传的文件
  • 该文件可以通过uploaded访问,这是一个Python字典。例如,如果您选择了一个名为“test.txt”的文件,那么uploaded['test.txt'] 将为您提供 Python 对象。您可以使用type 来查看您已经上传了一个字符串。只需打印 uploaded.keys() 即可显示所有文件名。
  • @LuisRamonRamirezRodriguez - 我刚刚使用 png 文件进行了测试,看起来它仍然作为字节字符串上传
【解决方案2】:

是的,所有这些场景都受支持。

有关访问本地和云端硬盘文件的方法,请查看I/O example notebook

要访问 xls 文件,您需要将文件上传到 Google 表格。然后,您可以在同一个I/O example notebook 中使用gspread 配方。

最近添加的上传本地文件的方法是使用右侧抽屉中的“文件”选项卡。

从那里,您可以使用“上传”按钮上传本地文件。

(您也可以通过在文件树中右键单击文件来下载文件。)

【讨论】:

  • 由于某种原因,即使您删除面板中的文件,它也不会更新。所以,最好用ls来了解现状
  • 该文件选项卡有没有办法附带某个 csv?无论如何,如果我与某人共享一个协作项目,一旦完成加载,他们就会拥有与我相同的 csv(无需每次都手动上传)
【解决方案3】:

首先,执行此单元格应创建一个内联的“选择文件”按钮

from google.colab import files
uploaded = files.upload()

选择文件后,uploaded 将成为键(文件名)和值(编码文件对象)的字典。要解码 Pandas 等库的文件,请尝试

import pandas as pd
import io
df = pd.read_csv(io.StringIO(uploaded['filename.csv'].decode('utf-8')))

在此之后,您的数据框 df 应该可以使用了

【讨论】:

  • 我刚刚运行了导入和“files.upload()”行,但它需要永远。它实际上是做什么的?它会上传我谷歌驱动器中的所有文件吗?
  • @kawingkelvin 如果我没记错的话,它应该会在你的笔记本上弹出一个文件选择窗口。从那里您单击所需的文件。如果它没有加载,可能是您的浏览器中的某些东西阻止了弹出窗口
  • 在从 safari 切换到 chrome 之后,我发现出了什么问题以及它应该如何工作(FF 也不起作用)。看来 google colab 对除 chrome 以外的其他浏览器不友好。
  • 它不起作用,我遇到了这个错误:KeyError: '/path/to/my_file.csv'
【解决方案4】:

将本地数据文件加载到 Colab:

方法一:谷歌驱动方法

  1. 将数据文件从系统内存上传到 Google 驱动器。
  2. 在 Colab 中安装 Google 驱动器

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

  3. 那么-> path = "/gdrive/My Drive/filename"

您现在可以在 Google Colab 中访问 Google Drive 文件。

方法二:直接加载

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

方法三:使用导入文件

from google.colab import files
uploaded = files.upload()

【讨论】:

  • 在方法 1 中,您给出了如何连接 Google Drive 的说明,但没有说明如何读取文件(例如 .csv)。您创建了一个名为“路径”的变量,但是您将如何处理它呢?如何将 Google Drive 中的 .csv 文件上传到 Google Colab 笔记本中?
  • 连接到驱动器后。非常直接地使用熊猫。 pd.read_csv('/gdrive/My Drive/temp.csv')
【解决方案5】:

为喜欢其他方式上传更多文件的人提供替代方案 - 这基本上允许您通过 Google 云端硬盘上传文件。

运行下面的代码(之前在某个地方找到了这个,但我再也找不到源代码了——感谢编写它的人!):

!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

from google.colab import auth
auth.authenticate_user()
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}

点击出现的第一个链接,提示您登录 Google;之后会出现另一个请求访问您的 Google Drive 的权限。

然后,运行它会创建一个名为“drive”的目录,并将您的 Google Drive 链接到它:

!mkdir -p drive
!google-drive-ocamlfuse drive

如果您现在执行!ls,将会有一个目录drive,如果您执行!ls drive,您可以看到您Google Drive 的所有内容。

例如,如果我将名为 abc.txt 的文件保存在 Google 云端硬盘中名为 ColabNotebooks 的文件夹中,我现在可以通过路径 drive/ColabNotebooks/abc.txt 访问它

【讨论】:

【解决方案6】:

这是一个两步过程。

第 1 步:首先使用以下代码在您的 colab 笔记本中调用文件选择器

from google.colab import files
uploaded = files.upload()

这将带您进入文件浏览器窗口

第 2 步:要将文件内容加载到 Pandas 数据框中,请使用以下代码

import pandas as pd
import io
df = pd.read_csv(io.StringIO(uploaded['iris.csv'].decode('utf-8')))
print(df)

【讨论】:

  • 您应该始终使用 {} 按钮或 CTRL-K 格式化您的代码。
【解决方案7】:

要从您的系统获取数据到 colab,请尝试以下操作:

from google.colab import files
uploaded = files.upload()

选择您要上传的文件,然后按回车键就完成了。 例如,我上传了一张图片并使用下面的代码显示它:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('image.jpg')
img_cvt = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.imshow(img_cvt)
plt.show()

【讨论】:

    【解决方案8】:

    假设,您的 Google 驱动器上有一个名为 Colab 的文件夹,其中有一个 csv 文件。 加载这个文件

    import pandas as pd
    titanic = pd.read_csv(“drive/Colab/Titanic.csv”)
    titanic.head(5)
    

    在此之前,您可能需要运行以下命令:

    首先运行这些代码以安装必要的库并执行授权。

    !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
    from google.colab import auth
    auth.authenticate_user()
    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}
    

    当您运行上面的代码时,您应该会看到如下结果:

    点击链接,复制验证码并粘贴到文本框中。

    授权过程完成后,

    安装您的 Google 云端硬盘:

    !mkdir -p drive
    !google-drive-ocamlfuse drive
    

    【讨论】:

      【解决方案9】:

      您可以使用此 URL 在 Google Colab 中上传文件:

      https://colab.research.google.com/notebooks/io.ipynb#scrollTo=vz-jH8T_Uk2c
      

      转到Local file system&gt;Downloading files to your local file system 然后运行代码。之后,将出现浏览器按钮,供您从 PC 上传文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-02
        • 2018-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多