公司項目采用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個空格。
四、問題總結
-
運作python 提示:please select a valid interpreter
原因:第一次使用pycharm,沒有導入python檔案
解決方法:進入pycharm->setting,查找interpreter,輕按兩下 project Interpreter,在 Project Interpreter選擇編譯器,點選apply,重新啟動pycharm。
-
讀取頁面傳回字典值提示錯誤:TypeError: string indices must be integers, not str
原因:列印出來發現是操作對象錯誤
解決方法:通過type()函數檢查操作對象類型