Uploading files on Google Drive using Python

16 Jul, 2020
In the modern era of the internet, a large number of mundane or work-related tasks are carried out over the internet. Compromise of data stored on a device could cause massive harm to an individual/company. Considering the rise in the number of malware, viruses, worms, trojan horse etc the security of data at rest has become a concern for many people.
One of the most common ways of protecting the data is by creating a backup of it. While backups do provide some protection to critical data, it should be situated far away from the original data. Such that even if the system containing the original data gets compromised somehow, the backup data would still be safe. Cloud storage is a technology built to fulfil that purpose.
Any person having a google account can use 15 Gigabytes of free cloud storage for storing their data. This solves the problem of an offsite backup. But uploading file data every time could be a little cumbersome. So to ease that process, we will create a python program that looks inside a directory and uploads any files inside it to our Google Drive account.
For this purpose, we will be using pydrive library. This module is not preloaded with python. So to install it execute the following command in the command-line:
pip install pydrive

For authenticating successfully to our google account every time we want to upload some data to it, we need to create an OAuth credential.
After completing the method above we would end up with a file of a name similar to client_secret_(really long ID).json. Rename the file to “client_secrets.json” and place it in the same directory where the main python program will be created.
Code
from pydrive.drive import GoogleDrivefrom pydrive.auth import GoogleAuth   # For using listdir()import os     # Below code does the authentication# part of the codegauth = GoogleAuth()  # Creates local webserver and auto# handles authentication.gauth.LocalWebserverAuth()       drive = GoogleDrive(gauth)   # replace the value of this variable# with the absolute path of the directorypath = r"C:\Games\Battlefield"      # iterating thought all the files/folder# of the desired directoryfor x in os.listdir(path):       f = drive.CreateFile({'title': x})    f.SetContentFile(os.path.join(path, x))    f.Upload()      # Due to a known bug in pydrive if we     # don't empty the variable used to    # upload the files to Google Drive the    # file stays open in memory and causes a    # memory leak, therefore preventing its     # deletion    f = None
The above code upon execution executes an instance of the default browser of your OS. It then asks for providing permissions to pydrive for accessing your Google Drive account. When all the desired permissions are granted, the browser shows a message
The authentication flow has completed.
After which the process of uploading files to Google Drive initiates.
Certain things to keep in mind while using the above program:-
Make sure “client_secrets.json” is inside the same directory as the Python program
The directory(path) should not contain any subdirectories inside it
Your Google Drive should have sufficient empty space in order to incorporate for new files
The new files will be created in the root of Google Drive storage
Python-projects
python-utility
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Different ways to create Pandas Dataframe
Enumerate() in Python
Read a file line by line in Python
Python String | replace()
How to Install PIP on Windows ?
*args and **kwargs in Python
Python Classes and Objects
Python OOPs Concepts
Iterate over a list in Python