【问题标题】:Read file from drive in google colab从谷歌colab中的驱动器读取文件
【发布时间】:2019-05-06 05:57:52
【问题描述】:

我已阅读有关如何打开驱动器的notebook。我已经按照指示使用:

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

之后,我可以使用!ls 列出我的驱动器的内容,但我无法读取或打开任何文件。我已经试过了:

with open("/content/drive/My Drive/filename.ext", "r") as file:

file = open("/content/drive/My Drive/filename.ext", "r")

!cp "/content/drive/My Drive/filename.ext" "filename.ext"

还有

import pandas as pd

file = pd.read_csv("/content/drive/My Drive/filename.ext")

但以上都没有奏效。我总是得到“不支持操作”或“无法打开文件进行阅读”。 我看到了一些使用 PyDrive 的建议。但这是通过将文件从 Google Drive 复制到 Google Drive 来完成的。我不明白为什么你必须来回复制文件,因为我需要遍历文件夹中的所有文件。 为什么 google colab 不能只读取存储在驱动器上的文件?还是我做错了什么?另一件事是我上传了一堆 csv 文件,但谷歌驱动器将它们列为“.csv.gsheet”(使用 glob)。这可能是问题吗?我没有其他想法。

【问题讨论】:

    标签: google-drive-api google-colaboratory


    【解决方案1】:

    我确实怀疑 RenatoSz 的回答是正确的:我可以很好地打开 XLSX 文件,但即使只是 file = open('name_of_file.gsheet') 对我来说也失败了 Operation not supported 错误。令人烦恼的是,您无法在 Google Colab 中执行打开 Google 表格 的简单操作 - 这似乎是基本功能。

    我的解决方法是:

    from google.colab import auth
    auth.authenticate_user()
    import gspread
    from oauth2client.client import GoogleCredentials
    
    # authorise
    gc = gspread.authorize(GoogleCredentials.get_application_default())
    # open
    gsheets = gc.open_by_url('some_fun_URL')
    # read
    sheets = gsheets.worksheet('List of all experts').get_all_values()
    # parse
    df = pd.DataFrame(sheets[1:], columns=sheets[0])
    

    请注意,gc.open(...) 没有为我工作。

    【讨论】:

      【解决方案2】:

      我昨晚遇到了类似的问题。正如之前的一些响应者所发布的那样,存在影响您阅读文件能力的担忧。这些问题是,一是确保您的文件可以通过 Google 驱动器从您的 Collab 笔记本访问,二是确保您的文件格式正确。

      我将解释这些步骤并附上屏幕截图。

      1. 打开 Google 协作。打开文件浏览器。
      2. 在悬停时单击“安装驱动器”图标。这会在您的笔记本中插入一个新单元格,代码如下:
      from google.colab import drive
      drive.mount('/content/drive')
      

      运行单元格。系统会提示您接受权限并获取用于安装驱动器的令牌。授予权限并将代码复制并粘贴到文本输入中。回车。

      1. 驱动器现在出现在文件浏览器中。右键单击文件夹 /drive/My Drive 或单击三点操作菜单并选择上传。
      2. 在磁盘上找到您的文件并上传。
      3. 文件出现在文件浏览器中。右键单击文件(或使用三点操作菜单)并选择复制路径。
      4. 将该文件路径粘贴到您的 pd.read_csv() 调用中。
      5. 使用 pd.read_csv 函数调用运行单元格。
      6. 您现在应该已将文件上传到您的 Google 云端硬盘中。可访问 google collab 并保留文件格式,因为它未被任何其他程序访问以调整格式。

      下面是没有权限选项卡的示例,因为我之前授予了权限。

      【讨论】:

        【解决方案3】:

        这是直截了当的。

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

        这将要求打开一个 URL,该 URL 将在您复制粘贴令牌后授权安装。

        如果您现在还无法读取文件,那么前缀在您的文件路径上加上:'drive/My Drive',您就可以开始了。 p>

        例如: file = 'drive/My Drive/data/file.txt'

        data 是我的 Google Drive 中包含 file.txt 文件的目录。

        【讨论】:

        • 还要注意路径可以是gdrive/My Drive/...而不是drive/...
        【解决方案4】:

        我(部分)根据 Bob Smith 和 Ami F 的回答发现了发生的事情。
        我相信谷歌驱动器会阻止从转换为驱动器格式(gsheet、gdoc 等)的文件中读取访问权限。因此,每当我尝试使用!catopen 时,都会出现“操作不受支持”错误。当我尝试 Bob 的示例,创建一个文件然后读取它时,它在我的笔记本上运行。
        所以我设法prevent google from converting files,删除了旧文件并将所有内容再次上传到驱动器。现在,我所有的 csv 都保持不变(没有 .gsheet 扩展),我可以使用 open 访问它们。

        【讨论】:

          【解决方案5】:

          即使您上传“.csv”文件名,您也会看到“.csv.gsheet”文件名这一事实让我认为您将 CSV 上传到 sheet.google.com 而不是 drive.google.com。您能否确认上传到 drive.google.com 可以正常工作?

          【讨论】:

          • 我使用了从谷歌驱动器上传的文件夹。这不应该将它们保存为.csv吗?我还尝试上传单个 csv 和谷歌驱动器附加 .gsheet 扩展名
          • 问题是云端硬盘正在转换我上传的文件。我不得不在云端硬盘设置中禁用它。
          【解决方案6】:

          我刚刚尝试按照您的描述安装和创建一个云端硬盘文件,但无法重现您描述的错误。

          https://colab.research.google.com/drive/17iiKJPQOPv1eW5-Ctf707mPHXDtipE5G

          也许尝试使用 Runtime -> Reset all runtimes 菜单重置您的后端。或者,你能分享一个说明问题的笔记本吗?

          【讨论】:

          • 您的笔记本工作正常。我注意到创建的带有 .txt 扩展名的文件和驱动器没有附加 gdoc 扩展名。通过这个和另一个答案,我能够找出问题所在。
          • 谢谢,它只是你可以挂载驱动器,然后可以读写文件。 +1
          猜你喜欢
          • 1970-01-01
          • 2021-12-15
          • 1970-01-01
          • 2020-05-21
          • 2020-05-17
          • 2020-09-18
          • 2020-05-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多