gpt4 book ai didi

python - 将 xlsx 上传到 Google 云端硬盘共享文件夹

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:52 25 4
gpt4 key购买 nike

我想将与 .py 文件位于同一目录中的文件 risk_pos.xlsx 上传到共享驱动器中。如有任何帮助,我们将不胜感激。

我的代码:

scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"]
os.chdir(sys.path[0])
creds = ServiceAccountCredentials.from_json_keyfile_name("client_secret1.json", scope)
client = gspread.authorize(creds)

DRIVE = build('drive', 'v3', http=creds.authorize(Http()))

files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])


file_metadata = {'inventory': 'risk_pos.xlsx', 'parents': ['XXXXXXXXXXXXXXXX']}
media = MediaFileUpload('risk_pos.xlsx', mimetype='application/vnd.ms-excel')
files = DRIVE.files().create(body=file_metadata, supportsTeamDrives=True, media_body=media, fields='id').execute()

错误:

File "risk_pos3.py", line 59, in <module>
files = DRIVE.files().create(body=file_metadata, supportsTeamDrives=True, media_body=media, fields='id').execute()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/googleapiclient/http.py", line 851, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 404 when requesting
https://www.googleapis.com/upload/drive/v3/files?supportsTeamDrives=true&fields=id&alt=json&uploadType=multipart returned "File not found: XXXXXXXXXXXXXXXXXX.">

编辑:

我现在没有错误。我刚刚删除了 'parents': ['XXXXXXXXXXXXXXX']但我没有看到该文件出现在云端硬盘中。不过,每次我运行这个过程时,似乎都会出现一些新的东西。名为untitled...的文件如下所示,您可以看到文件数量在增加。但云端硬盘中没有无标题...文件。

 JRACMB-MahfoudD:market_risk delalma$ python3 risk_pos3.py 
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Market_data application/vnd.google-apps.spreadsheet
Market_data_volume application/vnd.google-apps.spreadsheet
Getting started application/pdf
JRACMB-MahfoudD:market_risk delalma$ python3 risk_pos3.py
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Market_data application/vnd.google-apps.spreadsheet
Market_data_volume application/vnd.google-apps.spreadsheet
Getting started application/pdf
JRACMB-MahfoudD:market_risk delalma$ python3 risk_pos3.py
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Untitled application/vnd.ms-excel
Market_data application/vnd.google-apps.spreadsheet
Market_data_volume application/vnd.google-apps.spreadsheet
Getting started application/pdf

最佳答案

服务帐户很棘手。如果上传没有错误,那么它可能正在上传,问题是它被上传到哪里?

服务帐户不是您,而是具有自己的驱动器帐户的虚拟用户。您可能已将该文件上传到服务帐户驱动器帐户。我要做的第一件事是运行一个文件。然后你能看到该文件吗?

问题是你说你在请求中使用了 parent 。这意味着您在服务帐户上创建了一个新文件夹并正在使用它,或者您在个人云端硬盘帐户上共享了一个文件夹并尝试上传到该文件夹​​。无论哪种方式,file.list 都会帮助您找出文件的位置(如果服务帐户上传了该文件,则它可以访问该文件),这将是查找该文件的最简单的方法。

无标题

文件分两部分上传。首先是包含文件名等内容的元数据,其次是文件本身的实际数据。您的问题是您没有上传元数据。

file_metadata = {'name': 'photo.jpg'}
media = MediaFileUpload('files/photo.jpg',
mimetype='image/jpeg')
file = drive_service.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
print 'File ID: %s' % file.get('id')

您可能想阅读managing uploads

至于总是创建一个新文件,考虑到您正在发送 file.create,那么总是会创建一个新文件,如果您希望它覆盖现有文件,那么您将需要执行 file.update

关于python - 将 xlsx 上传到 Google 云端硬盘共享文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com