我正在尝试更新驻留在 s3 存储桶中的 json 文件。我采取了不同的方法,但似乎没有任何效果。
下面是代码
import boto3
import json
#Loading Json from s3
s3= boto3.resource('s3', aws_access_key_id='id',aws_secret_access_key='key')
obj=s3.Object('s3python','test.json')
body=obj.get()['Body'].read()
jsonContent=json.loads(body)
print(jsonContent)
我收到以下错误
Error
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
如果下面的 json 读取成功,则 udpate 新值一次
updateJson={}
for k,v in jsonContent.items():
updateJson[k]=v
updateJson['key']='newvalue'
json_dump_s3 = lambda obj, f: s3.Object(key=f).put(Body=json.dumps(obj))
key='test.json'
json_dump_s3(updateJson,key)
#Writing Json to s3
谁能帮忙?
只是分享解决方案,因为它可能会帮助其他面临相同错误的人。
该错误是由于缺少解码((。所以只需要替换下面的行:
body=obj.get()['Body'].read()
更新:
body=obj.get()['Body'].read().decode()