Google Drive client
Google Drive client.
python -m pip install drive
poetry add drive
You also need to have
libmagic installed to get automatic detection of uploaded files’ MIME types. If you don’t have
it, you must provide the
original_mime_type keyword argument when you upload a file.
On Linux, if you do have
libmagic but Python can’t see it, see this StackOverflow question.
The API exposes a client as
drive.client.Client that manipulates instances of
File represent a Google Drive file. Note that both
regular files and directories are represented as
Files, and a file can have
multiple parent directories. You can check if a
File is a directory using the
Note: "Folder" is just a synonym for "Directory".
By default, the client reads your service account key JSON file at the location
given by the environment variable
GOOGLE_APPLICATION_CREDENTIALS. You can
override this behavior by passing it directly:
client = Client("/path/to/your/service-account-key.json")
See Google’s documentation on how to create a service account key.
upload_file(parent, path[, name]): Upload a file
upload_excel_workbook(parent, name, workbook): Upload an
openpyxlworkbook in a Google spreadsheet under
parentwith the name
The client also exposes low-level methods that work on file ids.
str, attribute): Human-readable file type
bool): Remove the file. If it's a directory, all its children are removed as well
rename(new_name): Rename the file
move_in(new_parent[, new_name]): Move a file under another directory. It can also rename the file at the same time.
list(): List a directory’s content
create_folder(name): Create a folder under the current one
get_or_create_folder(name): Retrieve a child folder or create it if it doesn’t exist
get_child(name): Return a file under the current directory.
parents(): Return a file's parents
parent(): Return the first parent of a file
download_file(path[, mime_type]): Download the file at a given location
download_workbook(): Download the file as an
json(): Parse the file as JSON
jsons(): Parse the file as JSONS (one JSON per line) and returns a generator
Methods that operate on directories (e.g.
list()) generally have no effect if
File instance is a regular file.
from drive.client import Client # Uses credentials from the path in the environment variable # GOOGLE_APPLICATION_CREDENTIALS. cl = Client() # Get the root directory d = cl.root() print(d.is_directory) # True print(d.name) # e.g. "My Drive" # Get a directory's content for f in d.list(): print(f.name) # Get a shared directory d = cl.get_shared_directory("My Shared Dir")
from drive.client import Client from openpyxl import Workbook cl = Client() # Download f = cl.get_file_by_name("my_sheet") workbook = f.download_workbook() # openpyxl workbook # save your download: workbook.save("myfile.xlsx") # Upload workbook = Workbook() d = cl.get_shared_directory("My Shared Directory") cl.upload_excel_workbook(d, "my_other_sheet", workbook)
from drive.client import Client cl = Client() # download a Drawing in a png image cl.download_file("11AASomeFileId", "localfile.png", "image/png")
Copyright © 2016-2023 Baptiste Fontaine
Distributed under the MIT License.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.