我在 lambda 中撰寫了一個 python 腳本,我在其中獲取 S3 CSV 檔案并將資料放入 DynamoDb。一切都很順利,但我想跳過回圈的 0 索引并且不知道如何在我的情況下執行該操作。以下是我的代碼:
import json
import boto3
s3_client = boto3.client("s3")
dynamodb = boto3.resource("dynamodb")
student_table = dynamodb.Table('s3todynamodb')
def lambda_handler(event, context):
source_bucket_name = event['Records'][0]['s3']['bucket']['name']
file_name = event['Records'][0]['s3']['object']['key']
file_object = s3_client.get_object(Bucket=source_bucket_name,Key=file_name)
print("file_object :",file_object)
file_content = file_object['Body'].read().decode("utf-8")
print("file_content :",file_content)
students = file_content.split("\n")
print("students :",students)
for student in students:
data = student.split(",")
print(data[0])
print(data[1])
print(data[2])
print(data[3])
print(data[4])
print(data[5])
print(data[6])
print(data[7])
print(data[8])
print(data[9])
print(data[10])
print(data[11])
print(data[12])
print(data[13])
print(data[14])
print(data[15])
print(data[16])
print(data[17])
print(data[18])
student_table.put_item(
Item = {
"Agent" : data[0],
"Agent answer rate" : data[1],
"Agent idle time" : data[2],
"Contacts missed" : data[3],
"Agent on contact time" : data[4],
"Nonproductive time" : data[5],
"Occupancy" : data[6],
"Online time" : data[7],
"Average after contact work time" : data[8],
"Average agent interaction time" : data[9],
"Average customer hold time" : data[10],
"Average handle time" : data[11],
"Contacts handled" : data[12],
"Contacts handled incoming" : data[13],
"Contacts handled outbound" : data[14],
"Contacts put on hold" : data[15],
"Contacts transferred out" : data[16],
"Contacts transferred out external" : data[17],
"Contacts transferred out internal" : data[18]
}
)
運行此代碼時還有第二個問題,雖然它作業正常,但每次執行時,它都會拋出下面提到的錯誤:

第一個問題 = 從 1 開始 for 回圈 第二個問題 = 索引串列超出范圍錯誤。
如果有人提供任何幫助,我將不勝感激。提前致謝。
uj5u.com熱心網友回復:
您幾乎可以肯定會碰到一個空行,導致您的 finalstudent.split(",")回傳一個元素陣列。
與其手動決議 CSV,不如使用內置的 Python 模塊為您決議它會容易得多:
from csv import DictReader
from io import StringIO
for Item in DictReader(StringIO(file_content)):
print(Item)
uj5u.com熱心網友回復:
對于第一個,您可以執行以下操作:
for student in students[1:]:
第二個問題在第 23 行,這是其中一個
print(data[X])
不太確定到底是哪一個,因為您的代碼沒有顯示行。您必須列印出資料(沒有索引)才能確定。
uj5u.com熱心網友回復:
代替:
for student in students:
和
for index, student in enumerate(students):
if index == 0:
continue
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/429332.html
標籤:Python for循环 亚马逊-s3 aws-lambda 亚马逊-dynamodb
上一篇:Python:檢查矩形內的所有點
