【发布时间】:2020-08-13 09:54:09
【问题描述】:
我的谷歌驱动器的不同文件夹中有大约 100k 个文件。我想从中下载特定文件。谷歌驱动器中文件的路径在 csv 中。
但是我怎样才能得到文件的 id 呢?我尝试了以下方法。
import pandas as pd
from apiclient import errors
#from pygdrive3 import service
def retrieve_all_files(service):
"""Retrieve a list of File resources.
Args:
service: Drive API service instance.
Returns:
List of File resources.
"""
result = []
page_token = None
while True:
try:
param = {}
if page_token:
param['pageToken'] = page_token
files = service.files().list(**param).execute()
#result.extend(files['items'])
idval = files.get('id')
if not idval:
break
except errors.HttpError.error:
print ('An error occurred: %s' % error)
break
return idval
df = pd.read_csv("/home/ram/Downloads/Data_Science/Kaggle Competition/BBox_List_2017_path_colab.csv",header=None)
print(df.head())
for i in df[0]:
request = drive_service.files()
result = retrieve_all_files(request)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
print ("Download %d%%." % int(status.progress() * 100))
但错误显示,drive_service is not defined。下面是我的 csv
0 1 ... 4 5
0 /content/drive/My Drive/nihxray/images_001/ima... 225.084746 ... 79.186441 Atelectasis
1 /content/drive/My Drive/nihxray/images_001/ima... 686.101695 ... 313.491525 Atelectasis
2 /content/drive/My Drive/nihxray/images_001/ima... 221.830508 ... 216.949153 Atelectasis
3 /content/drive/My Drive/nihxray/images_001/ima... 726.237288 ... 55.322034 Atelectasis
4 /content/drive/My Drive/nihxray/images_001/ima... 660.067797 ... 78.101695 Atelectasis
我只下载了上面 csv 中的那些文件。我怎样才能在 python 中做到这一点。感谢任何帮助
【问题讨论】:
标签: python csv google-drive-api google-api-python-client downloadfile