我正在尝试通过Python API将一堆zip文件上传到Team Drive。奇怪的是,如果zip文件的扩展名为“ call
”,则程序可以运行,但是如果扩展名为“ csv.gz
”,则程序将失败。这是代码:
.zip
这是错误消息:
from __future__ import print_function
import uuid
from apiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
from apiclient import errors
from apiclient.http import MediaFileUpload
args = tools.argparser.parse_args()
args.noauth_local_webserver = True
SCOPES = 'https://www.googleapis.com/auth/drive'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store, args)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
def upload_file_to_td_folder(folder_id, fn, mimeType):
body = {'name': fn, 'mimeType': mimeType, 'parents': [folder_id]}
return DRIVE.files().create(body=body, media_body=fn,
supportsTeamDrives=True, fields='id').execute().get('id')
FILE_MIME = 'application/vnd.google-apps.file'
folder_id = "abcdefg"
# file = "data_2018-09-07.csv.gz" this one works!
file = "data_2018-09-07.zip"
upload_file_to_td_folder(folder_id, file, FILE_MIME)
答案 0 :(得分:0)
我认为问题在于此处使用的文件扩展名类型。
file = "data_2018-09-07.csv.gz"
Gzip是用于存储单个压缩文件的文件格式。
file = "data_2018-09-07.zip"
ZIP是一种文件格式,用于存储任意数量的文件和文件夹以及无损压缩。
这意味着gzip仅能压缩单个文件,而zip则一个接一个地压缩多个文件,然后将它们归档到单个文件中。 因此,如果您需要一个大档案中的单个文件,则必须解压缩整个zip / gzip文件以获取该文件。 在您的情况下,您已将文件指定为csv.gz,将其压缩为单个文件更有效。
您可以在此处尝试使用ZIP Extractor扩展名,以有效管理云端硬盘中的zip存档。