使用 Dropbox 确定文件夹或文件 Python API
Determine if folder or file using Dropbox Python API
我正在尝试使用 Dropbox API v2 获取所有文件夹和所有文件的列表,并查看与每个文件夹和文件关联的元数据。
我已经能够让它列出我的 Dropbox 根目录中的所有文件和文件夹,以及 return 元数据,但是我不知道如何确定输出元数据是否用于文件 FileMetadata
或文件夹 FolderMetadata
.
当我打印查询中的 returned 值时,它会将它们显示为文件或文件夹
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'
我需要做什么来检查 returned 对象是文件还是文件夹,或者只指定列表中的 return 文件夹或 return 文件?这样我应该能够遍历整个保管箱中的所有文件夹和文件。
您可以使用isinstance
来检查对象的类型,可以是FileMetadata
、FolderMetadata
或DeletedMetadata
。这里有一个例子:
https://github.com/dropbox/dropbox-sdk-python/blob/master/example/updown.py#L91
如果您不想通读已接受的答案代码,可以使用此 function/line:
def isFile(dropboxMeta):
return isinstance(dropboxMeta,dropbox.files.FileMetadata)
我正在尝试使用 Dropbox API v2 获取所有文件夹和所有文件的列表,并查看与每个文件夹和文件关联的元数据。
我已经能够让它列出我的 Dropbox 根目录中的所有文件和文件夹,以及 return 元数据,但是我不知道如何确定输出元数据是否用于文件 FileMetadata
或文件夹 FolderMetadata
.
当我打印查询中的 returned 值时,它会将它们显示为文件或文件夹
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'
我需要做什么来检查 returned 对象是文件还是文件夹,或者只指定列表中的 return 文件夹或 return 文件?这样我应该能够遍历整个保管箱中的所有文件夹和文件。
您可以使用isinstance
来检查对象的类型,可以是FileMetadata
、FolderMetadata
或DeletedMetadata
。这里有一个例子:
https://github.com/dropbox/dropbox-sdk-python/blob/master/example/updown.py#L91
如果您不想通读已接受的答案代码,可以使用此 function/line:
def isFile(dropboxMeta):
return isinstance(dropboxMeta,dropbox.files.FileMetadata)