PyDrive2 is a wrapper library of google-api-python-client that simplifies many common Google Drive API V2 tasks. It is an actively maintained fork of https://pypi.python.org/pypi/PyDrive. By the authors and maintainers of the Git for Data - DVC project.
- Package: https://pypi.python.org/pypi/PyDrive2
- Documentation: https://docs.iterative.ai/PyDrive2
- Source: https://github.com/iterative/PyDrive2
- Changelog: https://github.com/iterative/PyDrive2/releases
- Running tests
- Simplifies OAuth2.0 into just few lines with flexible settings.
- Wraps Google Drive API V2 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.
- Provides fsspec filesystem implementation.
You can install PyDrive2 with regular pip command.
$ pip install PyDrive2
To install the current development version from GitHub, use:
$ pip install git+https://github.com/iterative/PyDrive2.git#egg=PyDrive2
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.
frompydrive2.authimportGoogleAuthfrompydrive2.driveimportGoogleDrivegauth=GoogleAuth() gauth.LocalWebserverAuth() drive=GoogleDrive(gauth)Upload/update the file with one method. PyDrive2 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')PyDrive2 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:{}, id:{}'.format(file1['title'], file1['id'])) # Paginate file lists by specifying number of max resultsforfile_listindrive.ListFile({'maxResults': 10}): print('Received{} files from Files.list()'.format(len(file_list))) # <= 10forfile1infile_list: print('title:{}, id:{}'.format(file1['title'], file1['id']))PyDrive2 provides easy way to work with your files through fsspec compatible GDriveFileSystem.
Install PyDrive2 with the required dependencies
$ pip install PyDrive2[fsspec]
frompydrive2.fsimportGDriveFileSystem# replace `root` with ID of a drive or directory and give service account access to itfs=GDriveFileSystem("root", client_id=my_id, client_secret=my_secret) forroot, dnames, fnamesinfs.walk("root"): ...All API functions made to be thread-safe.
Thanks to all our contributors!