遍历JSON并保存到S3上的文件

时间:2019-05-23 20:53:52

标签: python json python-3.x user-input boto3

我创建了一个简单的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'

0 个答案:

没有答案