Colab Python: загрузка / загрузка файлов Google без монтирования

#python #pandas #google-api #google-colaboratory

#python #pandas #google-api #google-colaboratory

Вопрос:

Я использую Python в Colabs для доступа к определенным файлам с их идентификаторами, их анализа и записи информации о них. Мне нужно сохранить записанную информацию в папке team на диске. Я неохотно монтирую, потому что папка team находится глубоко в архитектуре папок корпоративного диска. Я не знаю, как получить к нему доступ с основного диска, у меня он установлен на моем диске для легкого доступа. Я также просто чувствую себя странно, монтируя весь свой диск со всей информацией о компании на нем. Я действительно хотел бы, чтобы вы могли смонтировать одну папку (я знаю, что вы можете изменить путь после монтирования, но это тоже кажется странным).

Я нашел множество способов загрузить файл на основе идентификатора файла, но я не могу найти ни одного для загрузки в этот идентификатор файла или сохранения в идентификатор файла. Я знаю, что в Pandas также есть способ считывать информацию из идентификатора файла и использовать ее в качестве фрейма данных, который является опцией, но можете ли вы сохранить новую информацию в идентификаторе файла с помощью Pandas? Также, похоже, есть способ легко загрузить с помощью Google API с идентификатором файла, но, опять же, нелегкий способ загрузить в идентификатор файла или идентификатор папки и перезаписать файл.

Со временем эти файлы будут действительно большими; десятки тысяч строк, поэтому он должен быть в состоянии справиться с этим, либо загрузив только новую информацию, либо имея возможность обрабатывать длительные загрузки.

Редактировать: я также только что попробовал использовать gspread, но я не могу обмениваться файлами с электронными письмами за пределами домена нашей компании, поэтому я не могу использовать gspread. ):

Ответ №1:

Вы можете использовать pydrive для чтения и записи на основе FILE_ID

 from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

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

fid = 'Your File ID'

# read it
f = drive.CreateFile({'id': fid})  # just open an existing file
f.FetchMetadata(fetch_all=True) 
text = f.GetContentString() # or f.GetContentFile('im.png') to save a local file

# or write it
f.SetContentString('Sample upload file content')  # or SetContentFile('im.png')
f.Upload()