
Python google drive api download file - does
PyDrive 1.3.1
Features of PyDrive
- Simplifies OAuth2.0 into just few lines with flexible settings.
- Wraps Google Drive API into classes of each resource to make your program more object-oriented.
- Helps common operations else than API calls, such as content fetching and pagination control.
How to install
You can install PyDrive with regular command.
$ pip install PyDriveTo install the current development version from GitHub, use:
$ pip install git+https://github.com/googledrive/PyDrive.git#egg=PyDriveOAuth made easy
Download client_secrets.json from Google API Console and OAuth2.0 is done in two lines. You can customize behavior of OAuth2 in one settings file settings.yaml.
frompydrive.authimportGoogleAuthfrompydrive.driveimportGoogleDrivegauth=GoogleAuth()gauth.LocalWebserverAuth()drive=GoogleDrive(gauth)File management made easy
Upload/update the file with one method. PyDrive will do it in the most efficient way.
file1=drive.CreateFile({'title':'Hello.txt'})file1.SetContentString('Hello')file1.Upload()# Files.insert()file1['title']='HelloWorld.txt'# Change title of the filefile1.Upload()# Files.patch()content=file1.GetContentString()# 'Hello'file1.SetContentString(content+' World!')# 'Hello World!'file1.Upload()# Files.update()file2=drive.CreateFile()file2.SetContentFile('hello.png')file2.Upload()print('Created file %s with mimeType %s'%(file2['title'],file2['mimeType']))# Created file hello.png with mimeType image/pngfile3=drive.CreateFile({'id':file2['id']})print('Downloading file %s from Google Drive'%file3['title'])# 'hello.png'file3.GetContentFile('world.png')# Save Drive file as a local file# or download Google Docs files in an export format provided.# downloading a docs document as an html file:docsfile.GetContentFile('test.html',mimetype='text/html')File listing pagination made easy
PyDrive handles file listing pagination for you.
# Auto-iterate through all files that matches this queryfile_list=drive.ListFile({'q':"'root' in parents"}).GetList()forfile1infile_list:print('title: %s, id: %s'%(file1['title'],file1['id']))# Paginate file lists by specifying number of max resultsforfile_listindrive.ListFile({'maxResults':10}):print'Received %s files from Files.list()'%len(file_list)# <= 10forfile1infile_list:print('title: %s, id: %s'%(file1['title'],file1['id']))Concurrent access made easy
All calls made are thread-safe. The underlying implementation in the google-api-client library is not thread-safe, which means that every request has to re-authenticate an http object. You can avoid this overhead by creating your own http object for each thread and re-use it for every call.
This can be done as follows:
# Create httplib.Http() object.http=drive.auth.Get_Http_Object()# Create file object to upload.file_obj=drive.CreateFile()file_obj['title']="file name"# Upload the file and pass the http object into the call to Upload.file_obj.Upload(param={"http":http})You can specify the http-object in every access method which takes a param parameter.
-