获取目录文件列表

使用说明

  • 获取存储空间(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