Python 读取写入 json 格式的文件

读取,写入 json 文件代码如下:


#-*- coding:utf-8 -*-
import json
import time
import codecs
import demjson
import logging

#写入 json 文件
def store(data):
    with open('JavaScript1.json', 'w') as json_file:
#        logging.error(": " + json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')).encode('utf-8', 'ignore'))
#        json_file.write(json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')).encode('utf-8', 'ignore'))
        json_file.write(json.dumps(data, sort_keys=True, indent=4, ensure_ascii=False).encode('utf8'))
#读取 json 文件
def read1():
    with open('JavaScript.json', 'r') as f:
        data = json.load(f)
        return data
#        jsdata = json.dumps(data, sort_keys=True, indent=4, ensure_ascii=False)
#        f.close()
#        return jsdata

def getMsg(msg, k):
    j = k
    if msg.has_key('action'):
        print msg["action"]
        msg["chapter"] = j
        if msg.has_key("zuan_number") == False:
            msg["zuan_number"] = 0          #遗漏
        if msg.has_key("grow_number") == False:
            msg["grow_number"] = 0
            
        #判断习题
        if msg.has_key('exercises') and msg["exercises"] == True:
            wrongArr = msg["wrong"]
            correntArr = msg["correct"]
            for wa in wrongArr:     #遍历错误数组
                if wa.has_key("action"):
                    j = j + 1
                    wa["zuan_number"] = 0
                    wa["grow_number"] = 0
                    wa["chapter"] = j
            wrongArr[len(wrongArr)-1]["again"] = True   #最后一个加 again
            
            for ca in correntArr:     #遍历正确数组
                if ca.has_key("action"):
                    j = j + 1
                    ca["chapter"] = j
                    if ca.has_key("zuan_number") == False:
                        ca["zuan_number"] = 0          #遗漏
                    if ca.has_key("grow_number") == False:
                        ca["grow_number"] = 0
        j = j+1
#        return j
if __name__ == "__main__":
    data = read1()
    #对读取到的数据进行处理
    array = []
    for k in range(0, len(data.keys())):
        p = str(k+1)
        array.append(p)
    print array
    print data.keys()
    arr = array
    for i in arr:
        item = data[i]     #节数据
        print len(item)
        j = 1
        for q in range(0, len(item)):
            msg = item[q]
#        for msg in item:     #message,消息
            if msg.has_key('action'):
                print msg["action"]
                msg["chapter"] = j
                if msg.has_key("zuan_number") == False:
                    msg["zuan_number"] = 0          #遗漏
                if msg.has_key("grow_number") == False:
                    msg["grow_number"] = 0

                #判断习题
                if msg.has_key('exercises') and msg["exercises"] == True:
                    wrongArr = msg["wrong"]
                    correntArr = msg["correct"]
                    for wa in wrongArr:     #遍历错误数组
                        if wa.has_key("action"):
                            j = j + 1
                            wa["zuan_number"] = 0
                            wa["grow_number"] = 0
                            wa["chapter"] = j
                    wrongArr[len(wrongArr)-1]["again"] = True   #最后一个加 again
                        
                    for ca in correntArr:     #遍历正确数组
                        if ca.has_key("action"):
                            j = j + 1
                            ca["chapter"] = j
                            if ca.has_key("zuan_number") == False:
                                ca["zuan_number"] = 0          #遗漏
                            if ca.has_key("grow_number") == False:
                                ca["grow_number"] = 0
                j = j+1
        #最后一个元素加 record=true,判断有 action 没,有过,没写下一个
        item[len(item)-1]["record"] = True
        if item[len(item)-1].has_key("action") == False:
            item[len(item)-1]["action"] = "下一个"
            getMsg(item[len(item)-1], j)
    

    print sorted(data.keys())
    print array
    store(data)    #对处理完之后的数据写入



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值