简单的python小程序--- json文件替换

公司项目采用git做版本控制,但是里面的有几个文件是做环境配置的,每次更新下来都要改其中的一些变量,比较麻烦, 就自己写了一个python小程序做替换,然后编写了shell文件,在每次从git上更新之后,可以通过运行脚本完成文本替换。

一、python文件

#!/usr/bin/python
#change environment.json and servlet.json
import os
import json

#open environment.json
env_path = "文件路径"
servlet_path = "文件路径"

def change_environment(env_path):
    after = []
    with open(env_path, 'rb') as f:
        data = json.loads(f.read())
        print type(data)    

        for zidian in data:
        print(zidian)
            if data['tunnelPrvkey'] != "被替换值":
                data['tunnelPrvkey'] = "替换值"
    after = data
    with open(env_path, 'wb') as f:
        data = json.dump(after, f,indent=0)

def change_servlet(servlet_path):
    after = []
    with open(servlet_path, 'r') as f:
        data = json.loads(f.read())
        print type(data)
        for zidian in data:
            if data['tunnelPrvkey'] != "被替换值":
                data['tunnelPrvkey'] = "替换值"
    after = data
    with open(servlet_path, 'wb') as f:
        data = json.dump(after, f,indent=0)

change_environment(env_path)
change_servlet(servlet_path)

二、shell脚本

#!/bin/bash 
echo "change environment"
python /home/ncs/changeenvironment.py

三、处理json文件

1. python->json

a. dump: 将 Python 对象编码成 JSON 字符串,并将字符串写入文件中(多了一个文件对象)
b. dumps:将 Python 对象编码成 JSON 字符串

源码:

def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw):
def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw):
2. json->python

a. load: 将已编码的 JSON 字符串解码为 Python 对象,增加文件读操作(基本不用)
b: loads: 将已编码的 JSON 字符串解码为 Python 对象

3. json文件格式化

在dumps()方法中有一个indent=None的参数,使用indent参数对json数据格式化输出,比如设置indent=2意味着在每个键值对另起一行,同时缩进2个空格。

四、问题总结

  1. 运行python 提示:please select a valid interpreter
    原因:第一次使用pycharm,没有导入python文件
    解决方法:进入pycharm->setting,查找interpreter,双击 project Interpreter,在 Project Interpreter选择编译器,点击apply,重新启动pycharm。
  2. 读取页面返回字典值提示错误:TypeError: string indices must be integers, not str
    原因:打印出来发现是操作对象错误
    解决方法:通过type()函数检查操作对象类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值