我创建了一个简单的python脚本,该脚本创建JSON文件,并使用json和boto3将其上传到S3。
现在,我正在使用一个读取器来打开文件,并以一种直观的方式逐一浏览key1和value1,让用户对其进行编辑并将其保存到原始文件中。
我一直在研究点击,研究了用户输入,迭代和while循环,并且深入了解了兔子漏洞,并且需要一些通用的指导,如果我想使用CLI来提示用户编辑值在JSON代码中,您可以立即看到我的位置。
作者脚本:
import json
import boto3
data = [
{
"first_name": "Thor",
"last_name": "Odinsson",
"raw_date": "2016-01-05",
"birthday": "10000BC"
},
{
"first_name": "Odin",
"last_name": "Allfather",
"raw_date": "2018-07-11",
"birthday": "30000BC"
}
]
s3 = boto3.resource('s3')
obj = s3.Object('mjolnir','mjolnir.json')
obj.put(Body=json.dumps(data, indent=4))
读者/编辑者脚本:
import json
import boto3
s3 = boto3.client('s3')
data = s3.get_object(Bucket='mjolnir', Key='mjolnir.json')
contents = data['Body'].read().decode()
sep = " "
with open ("mjolnir.json", "rb+") as fd:
seekpos = fd.tell()
line = fd.readline()
while(line):
print(line)
next = input(">>> ")
if next == ":q":
break
if next:
values = line.split(sep)
newval = values[0] + sep + next + '\n'
if len(newval) == len(line):
fd.seek(seekpos)
fd.write(newval)
fd.flush()
os.fsync(fd)
else:
remaining = fd.read()
fd.seek(seekpos)
fd.write(newval + remaining)
fd.flush()
os.fsync(fd)
fd.seek(seekpos)
line = fd.readline()
seekpos = fd.tell()
line = fd.readline()
在我的终端中,它仅显示我:b'[\ n'