Python: download files from google drive using url Python: download files from google drive using url python python

Python: download files from google drive using url


If by "drive's url" you mean the shareable link of a file on Google Drive, then the following might help:

import requestsdef download_file_from_google_drive(id, destination):    URL = "https://docs.google.com/uc?export=download"    session = requests.Session()    response = session.get(URL, params = { 'id' : id }, stream = True)    token = get_confirm_token(response)    if token:        params = { 'id' : id, 'confirm' : token }        response = session.get(URL, params = params, stream = True)    save_response_content(response, destination)    def get_confirm_token(response):    for key, value in response.cookies.items():        if key.startswith('download_warning'):            return value    return Nonedef save_response_content(response, destination):    CHUNK_SIZE = 32768    with open(destination, "wb") as f:        for chunk in response.iter_content(CHUNK_SIZE):            if chunk: # filter out keep-alive new chunks                f.write(chunk)if __name__ == "__main__":    file_id = 'TAKE ID FROM SHAREABLE LINK'    destination = 'DESTINATION FILE ON YOUR DISK'    download_file_from_google_drive(file_id, destination)

The snipped does not use pydrive, nor the Google Drive SDK, though. It uses the requests module (which is, somehow, an alternative to urllib2).

When downloading large files from Google Drive, a single GET request is not sufficient. A second one is needed - see wget/curl large file from google drive.


Having had similar needs many times, I made an extra simple class GoogleDriveDownloader starting on the snippet from @user115202 above. You can find the source code here.

You can also install it through pip:

pip install googledrivedownloader

Then usage is as simple as:

from google_drive_downloader import GoogleDriveDownloader as gddgdd.download_file_from_google_drive(file_id='1iytA1n2z4go3uVCwE__vIKouTKyIDjEq',                                    dest_path='./data/mnist.zip',                                    unzip=True)

This snippet will download an archive shared in Google Drive. In this case 1iytA1n2z4go3uVCwE__vIKouTKyIDjEq is the id of the sharable link got from Google Drive.


I recommend gdown package.

pip install gdown

Take your share link

https://drive.google.com/file/d/0B9P1L--7Wd2vNm9zMTJWOGxobkU/view?usp=sharing

and grab the id - eg. 1TLNdIufzwesDbyr_nVTR7Zrx9oRHLM_N by pressing the download button (look for at the link), and swap it in after the id below.

import gdownurl = 'https://drive.google.com/uc?id=0B9P1L--7Wd2vNm9zMTJWOGxobkU'output = '20150428_collected_images.tgz'gdown.download(url, output, quiet=False)