使用说明
- 获取存储空间(Bucket)中指定目录下的文件列表。
- 注意:目前该接口只有北京、上海、广州、台北、首尔地域支持。
函数说明
listobjects
(bucket, prefix=None, marker=None, maxkeys=None, delimiter=None, header=None)
获取存储空间(Bucket)中指定目录下的文件列表
Parameters
- bucket – string 类型,空间名称
- prefix – string 类型,返回以prefix作为前缀的目录文件列表
- marker – string 类型,返回以字母排序后,大于marker的目录文件列表
- maxkeys – integer 类型,指定返回目录文件列表的最大数量,默认值为100,不超过1000
- delimiter – stringr 类型,目录分隔符,当前只支持"/"和"",当Delimiter设置为"/"且prefiex以"/"结尾时,返回prefix目录下的子文件,当delimiter设置为""时,返回以prefix作为前缀的文件
- header – dict类型,http 请求header,键值对类型分别为string,比如{'User-Agent': 'Google Chrome'}
Returns
- ret: 如果http状态码为[200, 204, 206]之一则返回None,否则如果服务器返回json信息则返回dict类型,键值对类型分别为string, unicode string类型,否则返回空的dict
- ResponseInfo: 响应的具体信息,UCloud UFile 服务器返回信息或者网络链接异常
Response Elements
Parameter name | Type | Description |
---|---|---|
Name | string | Bucket名称 |
Prefix | string | 查询结果的前缀 |
MaxKeys | int | 查询结果的最大数量 |
Delimiter | string | 查询结果的目录分隔符 |
IsTruncated | bool | 返回结果是否被截断。若值为true,则表示仅返回列表的一部分,NextMarker可作为之后迭代的游标 |
NextMarker | string | 可作为查询请求中的的Marker参数,实现迭代查询 |
Contents | array | 文件列表 |
CommonPrefixes | array | 以Delimiter结尾,并且有共同前缀的目录列表 |
Contents
Parameter name | Type | Description |
---|---|---|
Key | string | 文件名称 |
MimeType | string | 文件mimetype |
ETag | string | 标识文件内容 |
Size | string | 文件大小 |
StorageClass | string | 文件存储类型 |
LastModified | int | 文件最后修改时间 |
CreateTime | int | 文件创建时间 |
代码示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public_key = '' #账户公钥
private_key = '' #账户私钥
bucket = '' #空间名称
# 设置上传host后缀,外网可用后缀形如 .cn-bj.ufileos.com(cn-bj为北京地区,其他地区具体后缀可见控制台:对象存储-单地域空间管理-存储空间域名)
# 默认值为'.cn-bj.ufileos.com',如果上传文件的bucket所在地域不在北京,请务必设置此项
upload_suffix = 'YOUR_UPLOAD_SUFFIX'
# 设置下载host后缀,普通下载后缀即上传后缀,CDN下载后缀为 .ufile.ucloud.com.cn
download_suffix = 'YOUR_DOWNLOAD_SUFFIX'
from ufile import filemanager
listobjects_hander = filemanager.FileManager(public_key, private_key, upload_suffix, download_suffix)
prefix='' #以prefix作为前缀的目录文件列表
maxkeys=100 #指定返回目录文件列表的最大数量,默认值为100,不超过1000
marker='' #返回以字母排序后,大于marker的目录文件列表
delimiter='/' #delimiter是目录分隔符,当前只支持"/"和"",当Delimiter设置为"/"且prefiex以"/"结尾时,返回prefix目录下的子文件,当delimiter设置为""时,返回以prefix作为前缀的文件
# 普通使用(一次查询即可得到所有结果)
def once_list():
ret, resp = listobjects_hander.listobjects(bucket, prefix=prefix, maxkeys=maxkeys, marker=marker, delimiter=delimiter)
assert resp.status_code == 200
for object in ret['Contents']:#子文件列表
print(object)
for object in ret['CommonPrefixes']:#子目录列表
print(object)
# 因为一次查询返回数量存在最大限制,所以若一次查询无法获得所有结果,则根据返回值'NextMarker'循环遍历获得所有结果
def loop_list():
while True:
ret, resp = listobjects_hander.listobjects(bucket, prefix=prefix, maxkeys=maxkeys, marker=marker, delimiter=delimiter)
assert resp.status_code == 200
for object in ret['Contents']:#子文件列表
print(object)
for object in ret['CommonPrefixes']:#子目录列表
print(object)
marker = ret['NextMarker']
if len(marker) <= 0 or maxkeys < len(ret['Contents']):
break