For Loop throughAPIを使用してGoogleドライブからファイルをダウンロードする方法

Sho

APIを介してGoogleドライブでcsvファイルを取得すると、内容のないファイルが取得されます。
以下のコードは3つの部分で構成されています(1:認証2:ファイルの検索、3:ファイルのダウンロード)。
ステップ3に何か問題があるのではないかと思いますwhile done is False。Googleドライブへのアクセスとファイルのダウンロードに問題がないため、特にファイルをダウンロードします。それらがすべて空のファイルであるというだけです。

誰かが私がそれを修正する方法を教えてくれるといいですね。以下のコードは主にGoogleのウェブサイトから借用しています。よろしくお願いします!

ステップ1:認証

from apiclient import discovery
from httplib2 import Http
import oauth2client
from oauth2client import file, client, tools
obj = lambda: None # this code allows for an empty class
auth = {"auth_host_name":'localhost', 'noauth_local_webserver':'store_true', 'auth_host_port':[8080, 8090], 'logging_level':'ERROR'}
for k, v in auth.items():
    setattr(obj, k, v)

scopes = 'https://www.googleapis.com/auth/drive'
store = file.Storage('token_google_drive2.json')
creds = store.get()
# The following will takes a user to authentication link if no token file is found.
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', scopes)
    creds = tools.run_flow(flow, store, obj)

ステップ2:ファイルを検索し、ダウンロードするファイルの辞書を作成します

from googleapiclient.discovery import build

page_token = None
drive_service = build('drive', 'v3', credentials=creds)
while True:
    name_list = []
    id_list = []
    response = drive_service.files().list(q="mimeType='text/csv' and name contains 'RR' and name contains '20191001'", spaces='drive',fields='nextPageToken, files(id, name)', pageToken=page_token).execute()
    for file in response.get('files', []):
        name = file.get('name')
        id_ = file.get('id')

        #name and id are strings, so create list first before creating a dictionary
        name_list.append(name)
        id_list.append(id_)


        #also you need to remove ":" in name_list or you cannot download files - nowhere to be found in the folder!
        name_list = [word.replace(':','') for word in name_list]
    page_token = response.get('nextPageToken', None)
    if page_token is None:
        break

#### Create dictionary using name_list and id_list
zipobj = zip(name_list, id_list)
temp_dic = dict(zipobj)

ステップ3:ファイルをダウンロードする(面倒な部分)

import io
from googleapiclient.http import MediaIoBaseDownload

for i in range(len(temp_dic.values())):
    file_id = list(temp_dic.values())[i]
    v = list(temp_dic.keys())[i]
    request = drive_service.files().get_media(fileId=file_id)
    fh = io.FileIO(v, mode='w')
    downloader = MediaIoBaseDownload(fh, request)
    done = False
while done is False:
    status, done = downloader.next_chunk()
    status_complete = int(status.progress()*100)
    print(f'Download of {len(temp_dic.values())} files, {int(status.progress()*100)}%')
Sho

実際、私は自分自身を理解しました。以下は編集です。私がする必要があるのは、ダウンローダーを閉じるために削除done = False while done is False:して追加することだけでしたfh.close()

完全に改訂されたパート3は次のとおりです。

from googleapiclient.http import MediaIoBaseDownload

for i in range(len(temp_dic.values())):

    file_id = list(temp_dic.values())[i]
    v = list(temp_dic.keys())[i]
    request = drive_service.files().get_media(fileId=file_id)

    # replace the filename and extension in the first field below
    fh = io.FileIO(v, mode='wb') #only in Windows, writing for binary is specified with wb
    downloader = MediaIoBaseDownload(fh, request)

    status, done = downloader.next_chunk()
    status_complete = int(status.progress()*100)
    print(f'{list(temp_dic.keys())[i]} is {int(status.progress()*100)}% downloaded')

fh.close()
print(f'{len(list(temp_dic.keys()))} files')

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

for / loop(forEach)を使用して複数のファイルをGoogleDriveAPIにアップロードする方法

分類Dev

Python:URLを使用してGoogleドライブからファイルをダウンロードする

分類Dev

wgetを使用してGoogleドライブからファイルをダウンロードする

分類Dev

wgetを使用してGoogleドライブからファイルをダウンロードする

分類Dev

SDK forPHPを使用してGoogleドライブからzipファイルをダウンロードする

分類Dev

Pythonを使用してGoogleドライブからファイルをダウンロードする

分類Dev

wgetを使用してGoogleドライブからPDFファイルをダウンロードする

分類Dev

GooglePickerを使用してGoogleドライブからファイルをダウンロードする

分類Dev

dev / loop0は99%フルを示しています-ファイルをダウンロードできません

分類Dev

PythonとDriveAPIv3を使用してGoogleドライブファイルをダウンロードする方法

分類Dev

paperclip-googledriveを使用してGoogleドライブからファイルをダウンロードする方法は?

分類Dev

Angular 6/7を使用してGoogleドライブからファイル/ビデオをダウンロードする方法は?

分類Dev

Googleドライブからローカルのダウンロードファイルにファイルをダウンロードする方法

分類Dev

Python:APIを使用してGoogleドライブからファイルをダウンロードするにはどうすればよいですか

分類Dev

Java SDKAPIを使用してGoogleドライブからファイルをダウンロードする際のOutOfMemoryエラー

分類Dev

コマンドラインを介してグーグルドライブからファイルをダウンロードする方法

分類Dev

beautifulsoupを使用してGoogleドライブにファイルをダウンロードする

分類Dev

GoogleドライブAPIV3を使用してファイルのダウンロードを制限する

分類Dev

VBAを使用してExcelシートからGoogleドライブファイルをダウンロードする

分類Dev

Bashのcurlを介してGoogleドライブから大きなファイルをダウンロードする方法は?

分類Dev

Javaを使用してGoogleドライブからファイルをダウンロードすると、記号が表示されます

分類Dev

asp.netmvcを使用してGoogleドライブAPIからファイルをダウンロードする際の問題

分類Dev

Rを使用してSharePointフォルダーからファイルをダウンロードする方法

分類Dev

Pythonを使用してcloudflareでウェブサイトからファイルをダウンロードする

分類Dev

ブラウザなしでフォームを送信してウェブサイトからファイルをダウンロードする方法

分類Dev

Retrofitライブラリを使用してAndroidでファイルをダウンロードする方法は?

分類Dev

PRDownloaderライブラリを使用してファイルをダウンロードする方法

分類Dev

powershell を使用してインターネットからファイルをダウンロードする方法

分類Dev

google-api-ruby-clientを使用してGoogleドライブからファイルをダウンロードします

Related 関連記事

  1. 1

    for / loop(forEach)を使用して複数のファイルをGoogleDriveAPIにアップロードする方法

  2. 2

    Python:URLを使用してGoogleドライブからファイルをダウンロードする

  3. 3

    wgetを使用してGoogleドライブからファイルをダウンロードする

  4. 4

    wgetを使用してGoogleドライブからファイルをダウンロードする

  5. 5

    SDK forPHPを使用してGoogleドライブからzipファイルをダウンロードする

  6. 6

    Pythonを使用してGoogleドライブからファイルをダウンロードする

  7. 7

    wgetを使用してGoogleドライブからPDFファイルをダウンロードする

  8. 8

    GooglePickerを使用してGoogleドライブからファイルをダウンロードする

  9. 9

    dev / loop0は99%フルを示しています-ファイルをダウンロードできません

  10. 10

    PythonとDriveAPIv3を使用してGoogleドライブファイルをダウンロードする方法

  11. 11

    paperclip-googledriveを使用してGoogleドライブからファイルをダウンロードする方法は?

  12. 12

    Angular 6/7を使用してGoogleドライブからファイル/ビデオをダウンロードする方法は?

  13. 13

    Googleドライブからローカルのダウンロードファイルにファイルをダウンロードする方法

  14. 14

    Python:APIを使用してGoogleドライブからファイルをダウンロードするにはどうすればよいですか

  15. 15

    Java SDKAPIを使用してGoogleドライブからファイルをダウンロードする際のOutOfMemoryエラー

  16. 16

    コマンドラインを介してグーグルドライブからファイルをダウンロードする方法

  17. 17

    beautifulsoupを使用してGoogleドライブにファイルをダウンロードする

  18. 18

    GoogleドライブAPIV3を使用してファイルのダウンロードを制限する

  19. 19

    VBAを使用してExcelシートからGoogleドライブファイルをダウンロードする

  20. 20

    Bashのcurlを介してGoogleドライブから大きなファイルをダウンロードする方法は?

  21. 21

    Javaを使用してGoogleドライブからファイルをダウンロードすると、記号が表示されます

  22. 22

    asp.netmvcを使用してGoogleドライブAPIからファイルをダウンロードする際の問題

  23. 23

    Rを使用してSharePointフォルダーからファイルをダウンロードする方法

  24. 24

    Pythonを使用してcloudflareでウェブサイトからファイルをダウンロードする

  25. 25

    ブラウザなしでフォームを送信してウェブサイトからファイルをダウンロードする方法

  26. 26

    Retrofitライブラリを使用してAndroidでファイルをダウンロードする方法は?

  27. 27

    PRDownloaderライブラリを使用してファイルをダウンロードする方法

  28. 28

    powershell を使用してインターネットからファイルをダウンロードする方法

  29. 29

    google-api-ruby-clientを使用してGoogleドライブからファイルをダウンロードします

ホットタグ

アーカイブ