pythondropbox-apidropbox-sdk

Listing files using Dropbox API


I am trying to access files stored on my Dropbox using the offical Dropbox SDK for Python.. I tried a few ways of putting in the directory name whose contents I wanted to have listed based off of a script taken from this link https://practicaldatascience.co.uk/data-science/how-to-use-the-dropbox-api-with-python. Following the instructions in this website, I created an App, generated a dropbox access token (which produced 'long-gibberish'), and gave myself read permissions for Files and Folders.

When I login to Dropbox through the website, the folder structure for the folder that I want to access looks like so: Folder/ SubFolder/ SubSubFolder.

DROPBOX_ACCESS_TOKEN = 'long-gibberish' 
def dropbox_connect():
    """Create a connection to Dropbox."""

    try:
        dbx = dropbox.Dropbox(DROPBOX_ACCESS_TOKEN)
    except AuthError as e:
        print('Error connecting to Dropbox with access token: ' + str(e))
    return dbx

def dropbox_list_files(path):
    """Return a Pandas dataframe of files in a given Dropbox folder path in the Apps directory.
    """

    dbx = dropbox_connect()

    try:
        files = dbx.files_list_folder(path).entries
        files_list = []
        for file in files:
            if isinstance(file, dropbox.files.FileMetadata):
                metadata = {
                    'name': file.name,
                    'path_display': file.path_display,
                    'client_modified': file.client_modified,
                    'server_modified': file.server_modified
                }
                files_list.append(metadata)

        df = pd.DataFrame.from_records(files_list)
        return df.sort_values(by='server_modified', ascending=False)

    except Exception as e:
        print('Error getting list of files from Dropbox: ' + str(e))

I get the following error when calling the function:

dropbox_list_files('Folder/SubFolder/SubSubFolder')


Error getting list of files from Dropbox: ApiError('short-gibberish', ListFolderError('path', LookupError('not_found', None)))

I would like to get some help on how to set the right path.


Solution

  • After locating a Dropbox for Python tutorial, it was figured that the directory structure can be retrieved in the following manner

    for entry in dbx.files_list_folder('').entries:
        print(entry.name)
    

    But, before that an instance of the Dropbox object must be created:

    dbx = dropbox.Dropbox('YOUR_ACCESS_TOKEN')
    

    which is achieved by invoking and assigning dbx:

    dbx = dropbox_connect()