天天看點

簡單的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=)

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=)

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()函數檢查操作對象類型