PythonでGoogle ColabからGoogle Drive上のファイル操作する

Google Colabを使ってデータ分析や自動化をしていると、「自分のGoogle Driveにあるファイルを、Pythonのプログラムから自由自在に操作したい」と思うことがよくあると思います。
Google Colab(コラボ)とGoogle Driveを連携させれば、テキストファイルやCSVへのデータ書き込み、保存したファイルの読み込み、さらにはフォルダの整理まで、すべてプログラムから自動で行えるようになるため、作業効率を上げることができます。
このようにGoogle Colabを使っていると、「プログラムで作成したデータを保存したい」「Driveにあるデータを読み込みたい」という場面が必ず出てきます。
しかし、Colabはクラウド上の仮想環境で動いているため、そのままでは自分のGoogle Driveにあるファイルにアクセスできません。そこで必要になるのが「マウント」という操作です。
- マウントとは?
- マウントとは、Google DriveをColabから読み書きできる「外付けハードディスク」として認識させる機能のことです。 通常、ColabとGoogle Driveは切り離された場所にありますが、マウントを行うことで、Drive内のファイルをあたかも自分のPC内のフォルダ(ローカル環境)のようにPythonから扱えるようになります。
ここではGoogle Colabで、Pythonを使ってGoogle Driveへファイルを書き込む最もシンプルな方法について、基礎的な操作手順を解説します。
Google Colabでのファイル操作
まずは、最もシンプルで基礎的な「ファイルの書き込み」を例に見ていきましょう。
以下、サンプルコードになります。
Python(main.ipynb)
from google.colab import drive
# Drive マウント
drive.mount('/content/drive')
# 保存先のパスを指定
file_path = '/content/drive/MyDrive/file_test/test.txt'
# 指定したパスでファイルを開く
with open(file_path, 'w', encoding='utf-8') as f:
f.write('こんにちは、Python!\n')
f.write('ファイル操作の確認中です。')
print('書き込みが完了しました。')
まず from google.colab import drive を記述して、Google Colab専用のライブラリからGoogle Driveと連携するための機能を読み込みます。
次に drive.mount(‘/content/drive’) を実行することで、Google DriveをColab上で操作できるように接続します。実行時には認証画面が表示されるので、手順に従ってアクセスを許可してください。
保存先の指定には file_path という変数を使います。ここには書き込みたい場所を「パス」という住所のような形式で指定しますが、/content/drive/MyDrive/ より後ろの記述が、ご自身のドライブ内のフォルダ構成に対応する形になります。
実際の書き込みを行う with open(…) as f の部分では、ファイルを「書き込みモード」で開いています。このとき ‘w’ を指定すると、同名のファイルがある場合に内容がすべて上書きされるため注意が必要です。
また、with構文を使うことで、処理が終わると自動でファイルを閉じてくれるため、データの破損を防ぐ安全なプログラムになります。最後に encoding=’utf-8′ という設定を加えることで、日本語の文字化けを確実に防止しています。

今回のサンプルでは、書き込みモード(’w’)で新規作成または「上書き」としていますが、もし既存の内容を残したまま末尾に追記したい場合は、’w’ の代わりに ‘a’(append)モードを使用します。
サブディレクトリへの書き込み
これまでは「すでにあるフォルダ」へ保存するシンプルな方法を見てきましたが、実務では保存先のフォルダをあらかじめ手動で作っておくのが面倒な場面も多いはずです。
特に、日付ごとにフォルダを分けてデータを保存したい場合や、深い階層に整理してファイルを置きたい場合、指定した場所にフォルダがないとPythonはエラーを出して止まってしまいます。
そこで次に、保存先のフォルダがまだ存在しない場合でも、プログラムが状況を判断して自動でフォルダを作成し、確実にファイルを保存してくれる実戦的なコードを紹介します。
以下、サンプルコードになります。
Python(main.ipynb)
import os
from google.colab import drive
# Drive マウント
drive.mount('/content/drive')
# 保存先のパスを指定(サブディレクトリを含むパス)
# 例: file_test の中の sub_folder の中に保存したい場合
file_path = '/content/drive/MyDrive/file_test/sub/sub_test.txt'
# ディレクトリが存在しない場合は作成する
folder_path = os.path.dirname(file_path) # ファイル名を除いたフォルダパスを取得
os.makedirs(folder_path, exist_ok=True) # フォルダを自動作成(既にある場合は何もしない)
# 指定したパスでファイルを開く
with open(file_path, 'w', encoding='utf-8') as f:
f.write('こんにちは、Python!\n')
f.write('サブディレクトリのファイル操作の確認中です。')
print('書き込みが完了しました。')
まず import os を記述して、フォルダの作成やパスの解析など、システム上のディレクトリ操作を行うための標準機能を読み込みます。
次に os.path.dirname(file_path) を使うことで、指定したフルパスから末尾の「ファイル名」だけを取り除き、保存先となるフォルダまでのパスを自動で抽出します。これにより、どの階層にフォルダを作るべきかをプログラムが正確に判断できるようになります。
そして、今回の処理で最も重要になるのが os.makedirs(folder_path, exist_ok=True) です。これは指定されたフォルダがまだ存在しない場合に、中間の階層を含めて一気に作成してくれる命令です。
ここで exist_ok=True という設定を加えることで、既にフォルダが存在する場合でもエラーを出さずに処理を続行できます。この一行があるおかげで、どんなに深い階層を指定しても、フォルダの有無を気にすることなく確実にファイルを保存できるようになります。

サブディレクトリがない場合でも、自動的に指定したディレクトリが作成され、ファイルの書き込みが実行されます。

PCのローカル開発環境の場合
ちなみに、PCのローカル環境やサーバーなどの一般的な開発環境(VS Codeなど)を利用する場合、現在のPythonで最も推奨されているのは pathlibライブラリを使った方法です。
pathlibは、Python 3.4以降で標準搭載された「パスをオブジェクトとして扱う」ための非常に強力なモジュールです。
Python(main.py)
from pathlib import Path
# 保存先のパス(ファイルまでの道のり)を定義
# 現在のフォルダにある data フォルダ内の sub フォルダ内の hello.txt を指定
file_path = Path("data/sub_folder/hello.txt")
# ファイルを保存するための「親フォルダ」を準備
# .parent は "data/sub" を指します
# parents=True : 中間のフォルダ(dataなど)がなくても一気に作成
# exist_ok=True: すでにフォルダがあってもエラーにせず進む
file_path.parent.mkdir(parents=True, exist_ok=True)
# ファイルへの書き込み
# .open() を使うことで、Pathオブジェクトから直接ファイルを開けます
with file_path.open(mode="w", encoding="utf-8") as f:
f.write("Hello Local Python!\n")
f.write("サブディレクトリへの保存に成功しました。")
# absolute() で、PC上のフルパスを表示
print(f'保存先: {file_path.absolute()}')
print('--- 読み込み結果 ---')
# .exists() でファイルが実際に存在するか確認
if file_path.exists():
with file_path.open(mode='r', encoding='utf-8') as f:
print(f.read())
まず from pathlib import Path を記述して、パスを「オブジェクト」として扱える便利な機能を読み込みます。
このライブラリの最大の特徴は、file_path.parent.mkdir(…) のように、パスに対して直接「その親フォルダを作成しろ」と命令できる点です。WindowsやMacといったOSごとの区切り文字の違いを自動で吸収してくれるため、書き間違いが少なくなります。
設定の parents=True は、途中のフォルダがなくてもすべて自動で補完して作成する役割を持ちます。また、file_path.open() を使うことで、ファイルを開く動作もオブジェクト指向に基づいたスマートな記述になり、プログラム全体の見通しが非常に良くなります。
まとめ
今回は、Pythonを使ってGoogle ColabからGoogle Drive上のファイル操作を行う基本を解説しました。
まず「マウント」を行うことで、クラウド上のドライブを外付けハードディスクのように接続し、Pythonから自由に扱えるようになります。実務では、単にファイルを書き込むだけでなく、フォルダの有無を気にせず保存できる os.makedirs を活用した手法が非常に役立ちます。データの破損や文字化けを防ぐために、with 構文や文字コードの指定をセットで行い、安全に読み書きする習慣をつけましょう。
こうしたファイル操作ができるようになると、データ分析の結果を自動保存したり、蓄積されたログを読み込んだりと、作業の幅が大きく広がります。まずは今回のサンプルコードをベースに、ご自身の環境で自由なファイル操作に慣れていってください。