python中此公式的特定正则表达式

时间:2019-02-01 19:44:21

标签: python regex amazon-s3

我正在尝试创建一个正则表达式以匹配我的s3存储桶中的此文件。这是我要创建的S3密钥,显然现在找不到正确的密钥。下面,我提供了该正则表达式要尝试访问的路径/文件夹的存储桶的快照。

这再次是针对s3键的,在下面我还将发布我正在使用的部分代码。我指的是在NSPredicate(format: "AXEdited == 0")语句中。

File > Revert

错误:

try

谢谢你们

enter image description here

1 个答案:

答案 0 :(得分:0)

S3.Client.download_file不支持作为正则表达式的Key自变量。 1

s3_file_full_path的计算结果类似于下一个对象

re.compile(r'snowplow-enrich-output/enriched/archive/run=2019-02-24-\d{2}-\d{2}-\d{2}/*.',
re.UNICODE)

在存储桶快照中没有对象如此命名。

唯一的解决方法是列出存储桶对象,并将其键与上述正则表达式对象进行匹配。 2

上面的正则表达式类似于列出名称为'snowplow-enrich-output/enriched/archive/run=2019-02-24-'前缀为Key的对象。

list_object_kwargs = {
    'Bucket': os.environ.get('SP_BUCKET'),
    'Prefix': 'snowplow-enrich-output/enriched/archive/run=2019-02-24-'
}

def object_keys(contents):
    return [content['Key'] for content in contents]

objects = s3.list_objects_v2(**list_object_kwargs)
found_object_keys = object_keys(objects['Contents'])

while objects['IsTruncated']:
    objects = s3.list_objects_v2(
        ContinuationToken=objects['ContinuationToken'],
        **list_object_kwargs
    )
    found_object_keys.extend(object_keys(objects['Contents']))

try:
    for key in found_object_keys:
        s3.download_file(
            Bucket=os.environ.get('SP_BUCKET'), 
            Key=key)
except Exception as e:
    logger.error(
        "Could not retrieve %s because: %s" % (key, e))
    raise