У меня есть CSV-файл, содержащий три столбца и много строк. Все данные являются строками. Я пытаюсь прочитать CSV по одной строке за раз и преобразовать каждую строку в Dict, который затем я хочу добавить в список, чтобы у меня был список Dicts. Средой является AWS Lambda, а CSV поступает из корзины S3.
Мой код:
csv_object = s3.Object('MyBucket', 'My.csv')
csv_file = csv_object.get()['Body'].read().decode('utf-8')
f = StringIO(csv_file)
reader = csv.reader(f, delimiter=',')
list_of_json = []
mydevice = {}
for row in reader:
mydevice["device"] = row[0]
mydevice["serial"] = row[1]
mydevice["software"] = row[2]
list_of_json.append(mydevice)
Программное обеспечение работает (то есть не содержит ошибок) ,но это не дает желаемого результата. Если я print(list_of_json)
после завершения цикла for, я хочу, чтобы он произвел это;
[{"device":"Dev1", "serial":"Ser1", "software":"software1"},{.....}]
Но то, что на самом деле производит, это просто пустой список ... как будто оператор добавления даже не существует;
[]
Кажется, что чтение CSV и части for row in reader:
работают нормально. Если я выполняю print (mydevice) внутри цикла for, я вижу, что он успешно проходит через все устройства, но по причинам, которые я не могу понять, оператор добавления никогда не добавляет ничего в список list_of_json
.