使用Dropbox Python API

时间:2017-08-24 22:20:04

标签: python python-3.x dropbox dropbox-api

我正在尝试使用Dropbox API v2获取所有文件夹和所有文件的列表,并查看与每个文件夹关联的元数据。

我已经能够列出我的Dropbox根目录中的所有文件和文件夹,并返回元数据,但我无法弄清楚如何确定输出元数据是用于文件FileMetadata还是文件夹FolderMetadata

当我从查询中打印返回的值时,它将它们显示为文件或文件夹

import dropbox 

def print_metadata(dbfile):
    md = dbx.files_get_metadata(dbfile)
    print (md)

dbx = dropbox.Dropbox('MYAPIKEY')

myfiles = ['/someotherfile.jpg', '/Camera Uploads']

for myfile in myfiles:
    print_metadata(myfile)

文件:

FileMetadata(name='someotherfile.jpg', id='id:1234567890', client_modified=datetime.datetime(2013, 1, 15, 20, 51, 3), server_modified=datetime.datetime(2017, 8, 24, 21, 32, 52), rev='1234567890', size=162012, path_lower='/someotherfile.jpg', path_display='/someotherfile.jpg', parent_shared_folder_id=None, media_info=None, sharing_info=None, property_groups=None, has_explicit_shared_members=None, content_hash='1234567890')

文件夹:

FolderMetadata(name='Camera Uploads', id='id:0987654321', path_lower='/camera uploads', path_display='/Camera Uploads', parent_shared_folder_id=None, shared_folder_id=None, sharing_info=None, property_groups=None)

但由于我无法确定哪个是python中的哪个,我无法打印特定的元数据值,例如文件大小

print(md.size)

AttributeError: 'FolderMetadata' object has no attribute 'size'

我需要做什么来检查返回的对象是文件还是文件夹,还是指定只返回文件夹或只返回列表中的文件?这样我就可以遍历整个Dropbox中的所有文件夹和文件。

2 个答案:

答案 0 :(得分:1)

您可以使用isinstance检查对象的类型,可以是FileMetadataFolderMetadataDeletedMetadata。这里有一个例子:

https://github.com/dropbox/dropbox-sdk-python/blob/master/example/updown.py#L91

答案 1 :(得分:1)

如果您不想阅读已接受的答案代码,可以使用此功能/行:


while (1)
{

EXEC SQL FETCH FORWARD 3 test_cursor INTO :data;

[0][0] = first column   [0][1] = second column
[1][0] = first column   [1][1] = second column
[2][0] = first column   [2][1] = second column


////// load matrix:

[0] = David       [0][1] = a (the second position of the string)
[1] = Cristiano   [1][1] = r (the second position of the string)
[2] = Lionel      [2][1] = i (the second position of the string)

...
procesing data and clear the cursor then load the rest of the data are in the cursor
...

}