我使用Python3读取AWS存储桶名称,如果存储桶名称与bucket_exclusion_list数组中定义的任何名称部分匹配,则明确地退出循环。
我创建了一个存储桶验证函数,如下所示:
def valid_bucket(bucket_name):
bucket_exclusion_list = ['do-not-delete', 'aws-config', 'elasticbeanstalk']
for exclusion_items in bucket_exclusion_list:
if bool(re.match(exclusion_items, bucket_name)) == True:
return False
else:
continue
return True在我的主函数中,我调用了valid_bucket函数,并基于布尔值,在代码中继续执行。
if valid_bucket(bucket_name):
bucket_info["bucketName"] = bucket_name
bucket_info["bucketSize"] = ''
...代码似乎没有像预期的那样工作。如果当前存储桶名称与排除列表中的项匹配,则必须转到下一个存储桶名称。有人能帮我理解一下代码的问题吗?
发布于 2021-09-22 05:20:59
re.match将只匹配字符串的开头。您可以使用in代替正则表达式:
if exclusion_items in bucket_name:
return False
else:
continue也就是说,这个函数可以重写为:
def valid_bucket(bucket_name):
bucket_exclusion_list = ['do-not-delete', 'aws-config', 'elasticbeanstalk']
return all(item not in bucket_name for item in bucket_exclusion_list)发布于 2021-09-22 05:29:04
只需更改您的函数,如下所示:
import re
def valid_bucket(bucket_name):
bucket_exclusion_list = ['do-not-delete', 'aws-config', 'elasticbeanstalk']
regex = "|".join(bucket_exclusion_list)
if re.search(rf'{regex}', bucket_name):
return True
return False
if (valid_bucket(bucket_name)):
print ("VALID")
else:
print ("INVALID")存储桶名称= my-bucket的输出
INVALID存储桶名称= do-not-delete my-bucket的输出
VALIDhttps://stackoverflow.com/questions/69278512
复制相似问题