fsspec filesystem¶
PyDrive2 provides easy way to work with your files through fsspec compatible GDriveFileSystem.
Installation¶
pip install 'pydrive2[fsspec]'
Local webserver¶
from pydrive2.fs import GDriveFileSystem
fs = GDriveFileSystem(
    "root",
    client_id="my_client_id",
    client_secret="my_client_secret",
)
By default, credentials will be cached per ‘client_id’, but if you are using multiple users you might want to use ‘profile’ to avoid accidentally using someone else’s cached credentials:
from pydrive2.fs import GDriveFileSystem
fs = GDriveFileSystem(
    "root",
    client_id="my_client_id",
    client_secret="my_client_secret",
    profile="myprofile",
)
Writing cached credentials to a file and using it if it already exists (which avoids interactive auth):
from pydrive2.fs import GDriveFileSystem
fs = GDriveFileSystem(
    "root",
    client_id="my_client_id",
    client_secret="my_client_secret",
    client_json_file_path="/path/to/keyfile.json",
)
Using cached credentials from json string (avoids interactive auth):
from pydrive2.fs import GDriveFileSystem
fs = GDriveFileSystem(
    "root",
    client_id="my_client_id",
    client_secret="my_client_secret",
    client_json=json_string,
)
Service account¶
Using json keyfile path:
from pydrive2.fs import GDriveFileSystem
fs = GDriveFileSystem(
    # replace with ID of a drive or directory and give service account access to it
    "root",
    use_service_account=True,
    client_json_file_path="/path/to/keyfile.json",
)
Using json keyfile string:
from pydrive2.fs import GDriveFileSystem
fs = GDriveFileSystem(
    # replace with ID of a drive or directory and give service account access to it
    "root",
    use_service_account=True,
    client_json=json_string,
)
Use client_user_email if you are using delegation of authority.
Additional parameters¶
- trash_only (bool):
- Move files to trash instead of deleting. 
- acknowledge_abuse (bool):
- Acknowledging the risk and download file identified as abusive. See Abusive files for more info. 
Using filesystem¶
# replace `root` with ID of a drive or directory and give service account access to it
for root, dnames, fnames in fs.walk("root"):
    for dname in dnames:
        print(f"dir: {root}/{dname}")
    for fname in fnames:
        print(f"file: {root}/{fname}")
Filesystem instance offers a large number of methods for getting information about and manipulating files, refer to fsspec docs on how to use a filesystem.