2016-12-06 14 views
12

tôi vẫn tiếp tục sau JSON trong S3 xô 'test'Đọc một tập tin JSON từ S3 sử dụng Python boto3

{ 
    'Details' : "Something" 
} 

Tôi đang sử dụng đoạn mã sau để đọc JSON này và in ấn phím 'Chi tiết'

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']) 

và tôi đang nhận được lỗi như 'chỉ số chuỗi phải là số nguyên' tôi không muốn để tải về các tập tin từ S3 và sau đó đọc ..

+5

Tháo 'repr'. –

+1

@AlexHall Ban đầu tôi đã thử bằng cách xóa 'repr', nhưng nó không hoạt động, nó cho ** ValueError: Mong đợi tên thuộc tính kèm theo dấu ngoặc kép ** – Nanju

+2

Tôi giải quyết vấn đề .. JSON nên có thuộc tính kèm theo dấu nháy kép .. i thay đổi định dạng json của tôi – Nanju

Trả lời

4

Như đã đề cập trong các nhận xét ở trên, repr phải được xóa và tệp json phải sử dụng dấu ngoặc kép cho các thuộc tính. Sử dụng tập tin này trên AWS/s3:

{ 
    "Details" : "Something" 
} 

và mã Python sau, nó hoạt động:

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 
Các vấn đề liên quan