代码之家  ›  专栏  ›  技术社区  ›  Bo Qiang

通过pythonapi将zip文件上传到googleteamdrive

  •  0
  • Bo Qiang  · 技术社区  · 7 年前

    我正试图通过pythonapi将一堆zip文件上传到一个团队驱动器中。奇怪的是,如果zip文件有扩展名,程序就可以工作了 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)
    

    以下是错误消息:

    Traceback (most recent call last):
    File "test_td.py", line 103, in <module>
         upload_file_to_td_folder(folder_id, file, FILE_MIME)
    File "test_td.py", line 46, in upload_file_to_td_folder
         supportsTeamDrives=True, fields='id').execute().get('id')
    File "/home/bo/anaconda3/lib/python3.6/site-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
         return wrapped(*args, **kwargs)
    File "/home/bo/anaconda3/lib/python3.6/site-packages/googleapiclient/http.py", line 840, in execute
         raise HttpError(resp, content, uri=self.uri) googleapiclient.errors.HttpError:
         <HttpError 400 when requesting https://www.googleapis.com/upload/drive/v3/files?supportsTeamDrives=true&fields=id&alt=json&uploadType=multipart
           returned "Bad Request">
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Jessica Rodriguez    7 年前

    我想问题是这里使用的文件扩展名的类型。

    file = "data_2018-09-07.csv.gz" 
    

    Gzip

    file = "data_2018-09-07.zip"
    

    ZIP 是一种文件格式,用于存储任意数量的文件和文件夹以及无损压缩。

    这意味着gzip只能压缩一个文件,而zip则逐个压缩多个文件,然后将它们归档到一个文件中。 在您的例子中,您已经将文件指定为csv.gz版,压缩为单个文件更有效。

    你可以在这里试试 ZIP Extractor 通过扩展,可以有效地管理驱动器内的zip存档。

    推荐文章