我正在使用Python3來讀取AWS桶的名稱,并且如果桶的名稱與bucket_exclusion_list陣列中定義的任何名稱部分匹配,則特別從回圈中退出。
我創建了一個bucket驗證函式,如下所示:
我創建了一個bucket驗證函式。
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: return False.
else:
繼續: 繼續.
return True
在我的主函式中,我正在呼叫valid_bucket函式,并根據布林值,在代碼中繼續往下走。
if valid_bucket(bucket_name) 。
bucket_info["bucketName"] = bucket_name
bucket_info["bucketSize"] = "'
...
這段代碼似乎并沒有像預期的那樣作業。如果當前的水桶名稱與排除串列中的專案相匹配,我就必須轉到下一個水桶名稱。誰能幫我了解一下這段代碼的問題。
。uj5u.com熱心網友回復:
re.match將只匹配字串的開頭。你可以使用in來代替regex:
if exclusion_items in bucket_name:
return False
else:
繼續 繼續
既然如此,這個函式可以改寫為:
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)
uj5u.com熱心網友回復:
只需改變你的函式如下:
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 True
return False
if (valid_bucket(bucket_name))。
print ("VALID"/span>)
else:
print ("INVALID")
輸出的桶名= my-bucket
INVALID
Output with bucket name = do-not-delete my-bucket
VALID
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/332541.html
標籤:
