2016-12-06 25 views
12

Ciągle po JSON w S3 wiadra 'test'Odczytywanie pliku JSON z S3 przy użyciu Python boto3

{ 
    'Details' : "Something" 
} 

Używam poniższy kod, żeby przeczytać ten JSON i drukowanie przycisk 'Szczegóły'

s3 = boto3.resource('s3', 
        aws_access_key_id=<access_key>, 
        aws_secret_access_key=<secret_key> 
        ) 
content_object = s3.Object('test', 'sample_json.txt') 
file_content = content_object.get()['Body'].read().decode('utf-8') 
json_content = json.loads(repr(file_content)) 
print(json_content['Details']) 

i otrzymuję błąd jak „indeksy łańcuchowe muszą być liczbami całkowitymi” nie chcę, aby pobrać plik z S3, a następnie czyta ..

+5

Zdjąć 'repr'. –

+1

@AlexHall Początkowo próbowałem przez usunięcie 'repr', ale to nie działało, daje ** ValueError: Oczekiwanie na nazwę właściwości ujętą w podwójne cudzysłowy ** – Nanju

+2

Rozwiązałem problem .. JSON powinien mieć atrybuty ujęte w podwójne cudzysłowy .. zmieniam mój format json – Nanju

Odpowiedz

4

Jak wspomniano w komentarzach powyżej, repr musi zostać usunięty, a plik json musi użyć podwójnych cytatów dla atrybutów. Stosując ten plik na AWS/s3:

{ 
    "Details" : "Something" 
} 

i następujący kod Python, to działa:

import boto3 
import json 

s3 = boto3.resource('s3') 

content_object = s3.Object('test', 'sample_json.txt') 
file_content = content_object.get()['Body'].read().decode('utf-8') 
json_content = json.loads(file_content) 
print(json_content['Details']) 
# >> Something 
Powiązane problemy