如何在 Colab 存取 Google Drive 上的檔案
— 掛載及 PyDrive 教學

Google Colaboratory(簡稱為「Colab」)可讓你在瀏覽器上以 Jupyter Notebook 的互動式介面,來撰寫及執行 Python。開啟 Notebook 時,Colab 通過在 Google 雲端上建立 VM(虛擬機) 加載你的 .ipynb 檔案,而不會主動存取在個人電腦上的本地資源,即使編寫的程式存有錯誤或漏洞,亦不用擔心對你的主機造成損害。採用 Colab 能避免諸多在 PC 上編程 Python 時可能發生的問題,如程式庫無法安裝及版本衝突引起的錯誤,十分適合學生和初學者作入門練習,以至供數據科學家同時分析及處理多個專案。
不過,在使用 Colab 時要注意虛擬機的生命週期。在你的瀏覽器或筆記本的分頁被關閉或者被閒置之後,當其執行階段逾時(session timeout)就會終止虛擬機,釋放 RAM 及磁碟等資源。若你使用 Google Drive 來儲存 Notebook,會如同 Google Doc 和 Google Sheets 一般自動儲存變更,該筆記本內的程式片段及執行結果都會記錄至一個 .ipynb 檔案。儘管如此,其他在 VM 磁碟上的文件(如上傳的資料檔,或匯出的圖片等)都只是暫存性質,若不另外將它們保存起來,在虛擬機終止之後將永久掉失那些關聯及衍生的檔案。在你上傳檔案至 Colab 時,會看到以下警告訊息:
本文將讓你了解在 Colab 中調用 Google Drive 的兩大途徑:
- 掛載 Google Drive 到 Colab 的虛擬機
- 使用 PyDrive 查看、下載、儲存檔案
你也開啟 Google Colab,然後新增一個筆記本來試試看吧!
1. 掛載 Google Drive 到 Colab 的 虛擬機
下面的示例展示瞭如何使用授權碼在虛擬機中掛載 Google Drive,並在不再使用時卸載該遠端硬碟。
# 導入 google.colab 的 drive 模組,在虛擬機中掛載 Google Drive 為路徑 '/gdrive'。 | |
from google.colab import drive | |
drive.mount('/gdrive') | |
# 將當前目錄更改為雲端硬碟的根目錄 | |
%cd /gdrive/My Drive/ | |
# 卸載 Google Drive 實例 | |
drive.flush_and_unmount() |


成功掛載之後,你可以像對代本地磁碟機一樣,利用 %
或 !
來呼叫 Linux 的系統指令,例如 cd
、ls
、mkdir
等檔案系統的操作,來管理 Google Drive 上的檔案和文件夾。
# 列出當前目錄的文件 | |
%ls | |
# 創建並寫入單行文字,接著列出文件內容 | |
!echo "Hello World!" > hello.txt | |
%cat hello.txt | |
# 刪除文件 | |
%rm hello.txt | |
# 創建新文件夾並列出當前目錄下的文件夾 | |
%mkdir new_dir | |
%ls -d */ | |
# 刪除名稱叫 "new_dir" 的文件夾 | |
%rm -r new_dir/ |
你也可以在筆記本執行 import os
來導入 Python OS 標準程式庫,撰寫 Python 代碼來操作、讀取及寫入在 /gdrive
路徑下的文件。
通過掛載的方式來連接 Google Drive,雖然是簡單易用,但是只能夠在 Colab 上運用,缺乏移植至其他主機或平台的兼容性。接下來,讓我們再來看看另一個做法,如何使用 PyDrive 來訪問 Google Drive。
2. 使用 PyDrive 查看、下載、儲存檔案
PyDrive 是 google-api-python-client 的封裝套件包,整合了常見的 Google Drive API 應用,利用簡單的函式就能呼叫 API 操作 Google Drive。因為 PyDrive 是 Colab 上已預裝的 Python 套件包,所以不必通過 pip
來安裝,該套件也能夠於 Colab Notebook 上被導入使用。
在創建 PyDrive 客戶端時,須要透過 OAuth2 來進行用戶驗證。在 Colab 上運行以下程式碼片段,將導入 PyDrive 模組與相關套件,接著通過 Google 身份驗證獲取 Google Drive 的查看及編輯權限。在完成之後,將宣告為 drive
在保存已成功連接的客戶端。
# 導入 PyDrive 和相關程式庫 Import PyDrive and associated libraries. | |
# 這只需要在筆記本中執行一次 This only needs to be done once in a notebook. | |
from pydrive.auth import GoogleAuth | |
from pydrive.drive import GoogleDrive | |
from google.colab import auth | |
from oauth2client.client import GoogleCredentials | |
# 驗證並創建 PyDrive 客戶端 Authenticate and create the PyDrive client. | |
# 這只需要在筆記本中完成一次 This only needs to be done once in a notebook. | |
auth.authenticate_user() | |
gauth = GoogleAuth() | |
gauth.credentials = GoogleCredentials.get_application_default() | |
drive = GoogleDrive(gauth) |
在初次運行程式碼片段之後,會顯示要求開啟 Google 登錄服務進行身份驗證的網頁連結:



2a. 創建文字檔案
在取得連接至 Google Drive 的客戶端之後,你可以嘗試通過 PyDrive 建立一個文字檔案。在筆記本裡運行以下的程式片段,將在雲端硬碟的根目錄新增一個內容為「 Hello World! 」的 Hello.txt
檔案。
# 創建標題為"Hello.txt"的GoogleDriveFile實例至drive的根目錄 Create GoogleDriveFile instance with title 'Hello.txt' to drive's root directory. | |
uploaded = drive.CreateFile({'title': 'Hello.txt'}) | |
uploaded.SetContentString('Hello World!') | |
uploaded.Upload() | |
print('Uploaded file with ID {}'.format(uploaded.get('id'))) |
2b. 上傳本地檔案
除了寫入文字內容,你亦可以嘗試通過 PyDrive 將本地檔案上傳至 Google Drive。假設你在 Colab 繪製了一張圖表,並輸出到虛擬機的本地磁碟,利用以下的程式片段,就能將圖片檔案上傳,在雲端硬碟上建立一個檔案副本。
# 讀取文件並將其設置為本實例的內容 Read file and set it as a content of this instance. | |
uploaded = drive.CreateFile() | |
uploaded.SetContentFile('picture.jpg') | |
uploaded.Upload() | |
print('Uploaded file with ID {}'.format(uploaded.get('id'))) |
2c. 將檔案建立至指定的雲端文件夾
上述的兩個示範,都是將檔案存放至雲端硬碟的根目錄中。若想將檔案建立至其他路徑,則須如以下的範例在呼叫 CreateFile()
時,將 雲端文件夾 ID
編匯至其引數之中:
metadata = {'parents': [{'id':'<YOUR_GOOGLE_DRIVE_FOLDER_ID>'}]} | |
uploaded = drive.CreateFile(metadata) | |
uploaded.Upload() | |
print('Uploaded file with ID {}'.format(uploaded.get('id'))) |
2d. 將檔案移動至目標文件夾
你亦可以嘗試利用 PyDrive 將已上傳的檔案移動至指定的雲端文件夾。只要通過指派新的 雲端文件夾 ID
來取代該檔案 metadata 中的 parents
屬性,如以下的程式片段:
uploaded['parents'] = [{'id':'<YOUR_GOOGLE_DRIVE_FOLDER_ID>'}] | |
uploaded.Upload() | |
uploaded.get('parents') |
你還能夠使用 PyDrive 來呼叫以下的 Google Drive 操作:
- 將文件丟至垃圾桶、從垃圾桶還原,以及永久刪除
- 更新文件的 Metadata
- 下載文件內容
- 更新文件內容
- 列出所有文件
在這裡我就不逐一列出全部的代碼範例,若你很感興趣請開啟在下方的參考連結瀏覽相關內容。
參考文件
- Google Colaboratory: Google Drive Snippets
- PyDrive’s documentation
- Google Drive API Reference | Google Developers
- 筆記 for Python (Google Colab + PyDrive) | Jacky Lu | Medium
如對本文內容有疑問,請於下方留言,或透過 Facebook 專頁 與我聯繫。