Created
February 22, 2017 09:02
-
-
Save Keshava11/d14db1e22765e8de2670b8976f3c7efb to your computer and use it in GitHub Desktop.
Simple python script to upload file to Dropbox.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!python3.5 | |
# Prerequisites : | |
# 1.SetUp dropbox sdk to be able to use Dropbox Api's | |
# $ sudo pip install dropbox | |
# By default python dropbox sdk is based upon the python 3.5 | |
# | |
# 2. Create an App on dropbox console (https://www.dropbox.com/developers/apps) which will be used and validated to do | |
# the file upload and restore using dropbox api. Mostly you need an access token to connect to Dropbox before actual file/folder operations. | |
# | |
# 3. Once done with code, run the script by following command | |
# $ python SFileUploader.py // if python3.5 is default | |
import sys | |
import dropbox | |
from dropbox.files import WriteMode | |
from dropbox.exceptions import ApiError, AuthError | |
# Access token | |
TOKEN = '<Generated after after App creation in step 2 in Prerequisites>' | |
LOCALFILE = '<Path to the file to be uploaded>' | |
BACKUPPATH = '/<desitination filename>' # Keep the forward slash before destination filename | |
# Uploads contents of LOCALFILE to Dropbox | |
def backup(): | |
with open(LOCALFILE, 'rb') as f: | |
# We use WriteMode=overwrite to make sure that the settings in the file | |
# are changed on upload | |
print("Uploading " + LOCALFILE + " to Dropbox as " + BACKUPPATH + "...") | |
try: | |
dbx.files_upload(f.read(), BACKUPPATH, mode=WriteMode('overwrite')) | |
except ApiError as err: | |
# This checks for the specific error where a user doesn't have enough Dropbox space quota to upload this file | |
if (err.error.is_path() and | |
err.error.get_path().error.is_insufficient_space()): | |
sys.exit("ERROR: Cannot back up; insufficient space.") | |
elif err.user_message_text: | |
print(err.user_message_text) | |
sys.exit() | |
else: | |
print(err) | |
sys.exit() | |
# Adding few functions to check file details | |
def checkFileDetails(): | |
print("Checking file details") | |
for entry in dbx.files_list_folder('').entries: | |
print("File list is : ") | |
print(entry.name) | |
# Run this script independently | |
if __name__ == '__main__': | |
# Check for an access token | |
if (len(TOKEN) == 0): | |
sys.exit("ERROR: Looks like you didn't add your access token. Open up backup-and-restore-example.py in a text editor and paste in your token in line 14.") | |
# Create an instance of a Dropbox class, which can make requests to the API. | |
print("Creating a Dropbox object...") | |
dbx = dropbox.Dropbox(TOKEN) | |
# Check that the access token is valid | |
try: | |
dbx.users_get_current_account() | |
except AuthError as err: | |
sys.exit( | |
"ERROR: Invalid access token; try re-generating an access token from the app console on the web.") | |
try: | |
checkFileDetails() | |
except Error as err: | |
sys.exit("Error while checking file details") | |
print("Creating backup...") | |
# Create a backup of the current settings file | |
backup() | |
print("Done!") |
Exception has occurred: AttributeError
'UploadWriteFailed' object has no attribute 'error'
File "/Users/Yen/AI應用/dropbox-sdk-python-master/dropboxtest.py", line 45, in backup
sys.exit()
File "/Users/Yen/AI應用/dropbox-sdk-python-master/dropboxtest.py", line 81, in
This is so easy to understand, thank you for writing this!
This is great. I confirmed this short script works with Python 3.10 in 2023.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Never mine.... I figured out that the "" should be "/"