0

以下代碼連接到AWS S3存儲桶並從S3存儲桶返回對象列表。我試圖通過選擇對象的部分值(即batchID = str((s3_file.name).split("/"))[32:-13])。我已經聲明「batchID」爲一個數組)來創建一個獨特的列表,當我使用set()返回唯一值時,它返回唯一的數字每個值。例如:['1', '0', '3', '2', '5', '4', '9', '8’], ['1', '0', '3', '2', '5', '4', '7', '9', '8’]等等。所以它是在列表中垂直去重的。我期望值是唯一的。見下面預期的輸出。我也嘗試使用嵌套的「for循環」,並使用「不」在」返回獨特價值,但它沒有工作,但它仍然是垂直而不是水平刪除重複任何人都可以請幫助預先感謝您如何從AWS S3存儲桶獲取唯一對象列表

def __init__(self, aws_access_key_id, aws_secret_access_key, aws_bucket_to_download, use_ssl): 
    self.run_id = [] 
    self.batchID = [] 
    self._aws_connection = S3Connection(aws_access_key_id, aws_secret_access_key, is_secure = use_ssl) 
    self._runId(aws_bucket_to_download) 

def _runId(self,aws_bucket_to_download): 
    if not self._bucketExists(aws_bucket_to_download): 
     self._printBucketNotFoundMessage(aws_bucket_to_download) 
    else: 
    bucket = self._aws_connection.get_bucket(aws_bucket_to_download) 
    for s3_file in bucket.list(prefix='Download/test_queue1/'): 
     batchID = str((s3_file.name).split("/"))[32:-13] 
     #a = set(batchID) 
     #batchID = list(a) 
     print batchID 
     #newList = list(set(batchID)) 
     #print newList` 

輸出:。 144019080231459 144019080231459 144019800231759 144019800231759

預期輸出: 144019080231459 144019800231759

回答

0

我想你問的是如何刪除重複的批次ID。你爲什麼不每一批次ID添加到列表中,你檢索它,忽略它,如果它已經在列表中,例如:

batchIDlist = [] 

for s3_file in bucket.list(prefix='Download/test_queue1/'): 
    batchID = str((s3_file.name).split("/"))[32:-13] 

    if batchID not in batchIDlist: 
     batchIDlist.append(batchID) 

這也將讓項目以相同的順序,他們首次發現。

+0

謝謝你的幫助。有效!! – Guddi

+0

@Guddi不客氣。如果您有一分鐘,請將其標記爲已接受的答案,以便人們知道問題已得到解答。 – jarmod

相關問題