2016-12-06 6 views
12

मैं S3 बाल्टी 'परीक्षण'S3 से एक JSON फ़ाइल अजगर का उपयोग कर पढ़ना boto3

{ 
    'Details' : "Something" 
} 

में JSON निम्नलिखित मैं निम्नलिखित कोड का उपयोग कर रहा इस JSON को पढ़ने के लिए और चाबी 'विवरण'

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']) 
मुद्रण रखा

और मुझे के रूप में त्रुटि हो रही है 'स्ट्रिंग सूचकांक होना चाहिए पूर्णांकों' मैं पढ़ S3 से फ़ाइल डाउनलोड करें और फिर नहीं करना चाहता ..

+5

'repr' निकालें। –

+1

@AlexHall प्रारंभ में मैंने 'repr' को हटाकर कोशिश की, लेकिन यह काम नहीं किया, यह ** ValueError दे रहा है: दोहरे उद्धरणों में संलग्न संपत्ति का नाम ** – Nanju

+2

मैंने समस्या का समाधान किया .. जेएसओएन में डबल कोट्स में संलग्न गुण होना चाहिए ..मैं अपना जेसन प्रारूप बदलता हूं – Nanju

उत्तर

4

जैसा ऊपर बताया गया है, repr को हटाया जाना है और json फ़ाइल को गुणों के लिए डबल कोट्स का उपयोग करना होगा। एडब्ल्यूएस/S3 पर इस फ़ाइल का उपयोग करना:

{ 
    "Details" : "Something" 
} 

और निम्नलिखित पायथन कोड, यह काम करता है:

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 
संबंधित मुद्दे