zoukankan      html  css  js  c++  java
  • python操作json文件:读取、写入、追加、删除、excel转json、json转excel

    import json

    class GetJsonData:
    def json_data(self, *json_file):
    '''
    :description:获取json文件数据
    :param json_file: 输入json文件名,默认为ranzidata.json
    :return: 返回数据类型为dict
    '''
    if len(json_file) == 1:
    part_path = 'ranzi/ranzi_config/' + str(json_file[0])
    file_path = GetPath().get_path(part_path)
    else:
    file_path = GetPath().get_path('ranzi/ranzi_config/ranzidata.json')
    #读取json文件
    with open(file_path, mode='r', encoding='utf-8') as jf:
    jd = json.load(jf)
    return jd

    def excel_to_json(self, excel_file_path, sheet_name, key_name):
    '''
    :description:将excel数据转化成json文件数据格式输出
    :param excel_file_path: excel文件路径
    :param sheet_name: 工作表名
    :param key_name: 定义键值
    :return:
    '''
    wb = openpyxl.load_workbook(excel_file_path)
    get_sheet = wb[sheet_name]
    list_tmp = []
    list_data = []
    stat = True
    json_data = {}
    for get_row in get_sheet:
    if stat:
    stat = False
    continue
    for get_cell in get_row:
    list_tmp.append(str(get_cell.value))
    list_data.append(list_tmp)
    list_tmp = []
    json_data[key_name] = list_data
    return json_data

    def json_to_excel(self, json_file, excel_path):
    wb = Workbook()
    data = self.json_data(json_file)
    k = data.keys()
    for sheet_name in k:
    try:
    wb.remove(sheet_name) # 如表已存在则移除工作表
    except:
    pass
    wb.create_sheet(sheet_name, 0)#创建表
    ws = wb[sheet_name]#操作指定表
    sheet_data = data[sheet_name]#获取表要写入的数据
    for t in range(1, len(sheet_data) + 1): # 遍历要写入的行数
    i = 65 # ASCII码'65'表示'A'
    for j in range(1, len(sheet_data[t - 1]) + 1): # 遍历每行要写入的数量
    ws['%s%d' % (chr(i), t)] = sheet_data[t - 1][j - 1]
    i += 1
    wb.save(excel_path)

    def json_update(self, dict_new, *json_file):
    if len(json_file) == 1:
    part_path = 'ranzi/ranzi_config/' + str(json_file[0])
    file_path = GetPath().get_path(part_path)
    else:
    file_path = GetPath().get_path('ranzi/ranzi_config/ranzidata.json')
    json_data = self.json_data()
    json_data.update(dict_new)
    with open(file_path, mode='w', encoding='utf-8') as jf:
    json.dump(json_data, jf, indent=2, sort_keys=True, ensure_ascii=False)

    def json_del(self, key, *json_file):
    if len(json_file) == 1:
    part_path = 'ranzi/ranzi_config/' + str(json_file)
    file_path = GetPath().get_path(part_path)
    else:
    file_path = GetPath().get_path('ranzi/ranzi_config/ranzidata.json')
    json_dict = self.json_data(file_path)
    json_data = json_dict.pop(key)
    print(json_data, 'delete success')
    with open(file_path, mode='w', encoding='utf-8') as jf:
    json.dump(json_dict, jf, indent=2, sort_keys=True, ensure_ascii=False)
  • 相关阅读:
    Chap-6 6.1~6.3 程序装载
    X Window基础二(转)
    X Window基础一(转)
    Linux基础命令 su与sudo的区别
    Chap-4 Section 4.6 链接控制过程
    Chap-4 Section 4.5 静态库链接
    ceph的CRUSH数据分布算法介绍
    使用ffmpeg捕获USB外部摄像头视频流
    使用ffserver实现转发实时流媒体(摄像头捕获)
    内存映射文件(专门读写大文件)
  • 原文地址:https://www.cnblogs.com/ttj57/p/13590310.html
Copyright © 2011-2022 走看看