[python] Google Colab : Google 드라이브에서 데이터를 읽는 방법은 무엇입니까?

문제는 간단합니다. gDrive에 대한 데이터가 있습니다 (예 :
/projects/my_project/my_data*.

또한 gColab에 간단한 노트북이 있습니다.

그래서 다음과 같이하고 싶습니다.

for file in glob.glob("/projects/my_project/my_data*"):
    do_something(file)

안타깝게도 모든 예제 (예 : https://colab.research.google.com/notebook#fileId=/v2/external/notebooks/io.ipynb )는 주로 필요한 모든 데이터를 노트북에로드하도록 제안합니다.

그러나 데이터가 많으면 상당히 복잡 할 수 있습니다. 이 문제를 해결할 기회가 있습니까?

도움에 감사드립니다!



답변

좋은 소식입니다. PyDrive 는 CoLab에서 최고 수준의 지원을 제공합니다! PyDrive는 Google 드라이브 Python 클라이언트 용 래퍼입니다. 다음은 + 를 사용하는 것과 유사하게 폴더에서 모든 파일을 다운로드하는 방법에 대한 예입니다 .glob*

!pip install -U -q PyDrive
import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# 1. Authenticate and create the PyDrive client.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# choose a local (colab) directory to store the data.
local_download_path = os.path.expanduser('~/data')
try:
  os.makedirs(local_download_path)
except: pass

# 2. Auto-iterate using the query syntax
#    https://developers.google.com/drive/v2/web/search-parameters
file_list = drive.ListFile(
    {'q': "'1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk' in parents"}).GetList()

for f in file_list:
  # 3. Create & download by id.
  print('title: %s, id: %s' % (f['title'], f['id']))
  fname = os.path.join(local_download_path, f['title'])
  print('downloading to {}'.format(fname))
  f_ = drive.CreateFile({'id': f['id']})
  f_.GetContentFile(fname)


with open(fname, 'r') as f:
  print(f.read())

의 인수 drive.ListFileGoogle Drive HTTP API에서 사용하는 매개 변수와 일치하는 사전입니다 ( q사용 사례에 맞게 매개 변수를 맞춤 설정할 수 있음).

모든 경우에 파일 / 폴더는 Google 드라이브에서 id로 인코딩됩니다 ( 1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk ). 이를 위해서는 검색을 루팅하려는 폴더에 해당하는 특정 ID에 대해 Google 드라이브를 검색해야합니다.

예를 들어 "/projects/my_project/my_data"Google 드라이브에 있는 폴더로 이동합니다 .

구글 드라이브

CoLab에 다운로드하려는 일부 파일이 포함되어 있는지 확인하십시오. PyDrive에서 사용하기 위해 폴더의 ID를 얻으려면 url을보고 id 매개 변수를 추출하십시오. 이 경우 폴더에 해당하는 URL은 다음과 같습니다.

https://drive.google.com/drive/folders/1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk

id는 URL의 마지막 부분 인 1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk 입니다.


답변

편집 : 2020 년 2 월 현재 드라이브 자동 마운트를위한 최고급 UI가 있습니다.

먼저 왼쪽에서 파일 브라우저를 엽니 다. ‘마운트 드라이브’버튼이 표시됩니다. 클릭하면 드라이브를 마운트하라는 권한 프롬프트가 표시되고 나중에 노트북으로 돌아갈 때 설정없이 드라이브 파일이 표시됩니다. 완료된 흐름은 다음과 같습니다.

드라이브 자동 마운트 예

원래 대답은 다음과 같습니다. (이는 공유 전자 필기장에서도 작동합니다.)

다음 코드 스 니펫을 실행하여 Google 드라이브 파일을 마운트 할 수 있습니다.

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

그런 다음 파일 브라우저 측면 패널에서 또는 명령 줄 유틸리티를 사용하여 드라이브 파일과 상호 작용할 수 있습니다.

다음은 노트북의 예입니다.


답변

훌륭한 답변에 감사드립니다! Google 드라이브에서 Colab으로 몇 개의 일회성 파일을 가져 오는 가장 빠른 방법 : 드라이브 도우미로드 및 마운트

from google.colab import drive

승인을 요청합니다.

drive.mount('/content/drive')

새 탭에서 링크를 열면 코드가 표시됩니다. 코드를 다시 복사하여 이제 Google 드라이브 확인에 액세스 할 수 있습니다.

!ls "/content/drive/My Drive"

그런 다음 필요에 따라 파일을 복사합니다.

!cp "/content/drive/My Drive/xy.py" "xy.py"

파일이 복사되었는지 확인합니다.

!ls


답변

이전 답변의 대부분은 약간 (매우) 복잡합니다.

from google.colab import drive
drive.mount("/content/drive", force_remount=True)

나는 이것이 구글 드라이브를 CO Lab 에 마운트하는 가장 쉽고 빠른 방법이라고 생각했습니다 . mount directory location매개 변수를 변경하여 원하는대로 변경할 수 있습니다 drive.mount. 계정에 대한 권한을 수락 할 수있는 링크가 제공되며 생성 된 키를 복사하여 붙여 넣으면 선택한 경로에 드라이브가 마운트됩니다.

force_remount 이전에로드되었는지 여부에 관계없이 드라이브를 마운트해야하는 경우에만 사용됩니다. 강제 마운트를 원하지 않는 경우 매개 변수를 무시할 수 있습니다.

편집 : IOcolab https://colab.research.google.com/notebooks/io.ipynb 에서 작업 을 수행하는 더 많은 방법을 찾으려면 이것을 확인하십시오.


답변

colab에 파일을 영구적으로 저장할 수 없습니다. 드라이브에서 파일을 가져올 수 있지만 파일 작업을 마칠 때마다 다시 저장할 수 있습니다.

Colab 세션에 Google 드라이브를 마운트하려면

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

로컬 파일 시스템 에서처럼 Google 드라이브에 간단히 쓸 수 있습니다. 이제 Google 드라이브가 파일 탭에로드됩니다. 이제 colab의 모든 파일에 액세스 할 수 있으며 파일을 읽고 쓸 수도 있습니다. 변경 사항은 드라이브에서 실시간으로 수행되며 파일에 대한 액세스 링크가있는 사람은 누구나 colab에서 변경 사항을 볼 수 있습니다.

with open('/content/gdrive/My Drive/filename.txt', 'w') as f:
   f.write('values')


답변

내가 한 일은 먼저입니다.

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

그때

%cd /content/drive/My Drive/Colab Notebooks/

예를 들어 csv 파일을 읽을 수 있습니다.

df = pd.read_csv("data_example.csv")

파일 위치가 다른 경우 내 드라이브 뒤에 올바른 경로를 추가하십시오.


답변

나는 게으르고 기억력이 나쁘기 때문에 암기하고 입력하기 쉬운 easycolab 을 만들기로 결정했습니다 .

import easycolab as ec
ec.mount()

먼저 설치해야합니다. !pip install easycolab

mount()방법은 기본적으로 이것을 구현합니다.

from google.colab import drive
drive.mount(‘/content/drive’)
cd ‘/content/gdrive/My Drive/’