每天我下载许多pdf文件,这些文件存储在本地电脑上。要存储所有这些文件,我需要每天在Google drive上创建一个文件夹,并将所有pdf文件存储在当前日期文件夹下。
我在这里面临的挑战是,我已经成功地用Python编写了使用GDrive API v3创建文件夹的代码,但仍然坚持将所有文件上载到刚刚创建的文件夹中。以下是我如何在当前日期创建文件夹的编码:
import pickle
import os.path, time
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from apiclient.http import MediaFileUpload
from datetime import date
SCOPES = ['https://www.googleapis.com/auth/drive.file']
CLIENT_SECRET_FILE = 'e:\\Python Programs\\credentials.json'
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
creds = flow.run_local_server(port=0)
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
# main folder ID under which we are going to create subfolder
parents_ID = '19nKlHGCypKPr40f3vjaEq22kgVkS7OCE'
# creates sub folder under main folder ID
fldr_name = date.today().strftime('%d%b%Y')
mimetype = 'application/vnd.google-apps.folder'
file_metadata = {'name': fldr_name, 'parents': [parents_ID],'mimeType': mimetype}
# with following line I could successfully create folder without any problem
service.files().create(body=file_metadata, fields='id').execute()
# with following lines, i tried to get the folder ID which was recently created so that I can start coding to upload pdf files onto this. Here im stuck
page_token = None
response = service.files().list(q="mimeType='application/vnd.google-apps.folder' and name = '27Apr2020' and trashed = false", spaces='drive', fields='nextPageToken, files(id, name)', pageToken=page_token).execute()
for file in response.get('files', []):
print(file.get('name'), file.get('id'))
time.sleep(5)
我得到了5秒的空白屏幕,然后它消失了。请帮助我将所有文件上载到最近创建的文件夹
谢谢
从上面的代码中,以下行已经返回了刚刚创建的文件夹的id(fields='id')
您还可以在创建文件夹时使用fields参数返回其他值(名称、父项等)
因此,如果您在下面这样的变量中捕获返回值
返回的值看起来像{'id':'17w2RS1H7S8no6X0oGtkieY'}
然后,您可以通过以下命令上载文件
您需要导入以下内容:
相关问题 更多 >
编程相关推荐