Yel*_*our 6 python metadata python-2.7 google-api-python-client
我从PyDrive文档中获得以下代码,允许访问我的Google云端硬盘中的顶级文件夹.我想从中访问所有文件夹,子文件夹和文件.我该怎么做呢(我刚刚开始使用PyDrive)?
#!/usr/bin/python
# -*- coding: utf-8 -*-
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
gauth = GoogleAuth()
gauth.LocalWebserverAuth() # Creates local webserver and auto handles authentication
#Make GoogleDrive instance with Authenticated GoogleAuth instance
drive = GoogleDrive(gauth)
#Google_Drive_Tree =
# Auto-iterate through all files that matches this query
top_list = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()
for file in top_list:
print 'title: %s, id: %s' % (file['title'], file['id'])
print "---------------------------------------------"
#Paginate file lists by specifying number of max results
for file_list in drive.ListFile({'q': 'trashed=true', 'maxResults': 10}):
print 'Received %s files from Files.list()' % len(file_list) # <= 10
for file1 in file_list:
print 'title: %s, id: %s' % (file1['title'], file1['id'])
Run Code Online (Sandbox Code Playgroud)
我已经检查了以下页面如何列出Google驱动器文件夹的所有文件,文件夹,子文件夹和子文件,这似乎是我正在寻找的答案,但代码不再存在了.
你的代码是绝对正确的。但是使用 Pydrive 的默认设置,您只能访问根级别的文件和文件夹。更改 settings.yaml 文件中的 oauth_scope 可修复此问题。
client_config_backend: settings
client_config:
client_id: XXX
client_secret: XXXX
save_credentials: True
save_credentials_backend: file
save_credentials_file: credentials.json
get_refresh_token: True
oauth_scope:
- https://www.googleapis.com/auth/drive
- https://www.googleapis.com/auth/drive.metadata
Run Code Online (Sandbox Code Playgroud)
小智 5
它需要迭代文件列表。基于此,代码将在文件夹中获取文件标题和每个文件的url链接。可通过提供文件夹的来调整代码以获取特定的文件id夹,例如ListFolder('id')。下面给出的示例正在查询root
#!/usr/bin/python
# -*- coding: utf-8 -*-
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
gauth = GoogleAuth()
gauth.LocalWebserverAuth() # Creates local webserver and auto handles authentication
#Make GoogleDrive instance with Authenticated GoogleAuth instance
drive = GoogleDrive(gauth)
def ListFolder(parent):
filelist=[]
file_list = drive.ListFile({'q': "'%s' in parents and trashed=false" % parent}).GetList()
for f in file_list:
if f['mimeType']=='application/vnd.google-apps.folder': # if folder
filelist.append({"id":f['id'],"title":f['title'],"list":ListFolder(f['id'])})
else:
filelist.append({"title":f['title'],"title1":f['alternateLink']})
return filelist
ListFolder('root')
Run Code Online (Sandbox Code Playgroud)