首頁 > 軟體

執行python指令碼並傳入json資料格式引數方式

2022-09-06 18:06:35

執行python指令碼並傳入json資料格式引數

最近在寫一個python的資料統計分析指令碼,需要根據json的資料格式引數去進行業務邏輯處理,出了一些情況拿出來一起分享討論。一下程式碼純屬範例。

        

指令碼類容很簡單,接收一下引數,並使用json包進行一個載入解析。

執行指令碼,傳入一個json物件陣列:

指令碼接受到的內容:

json載入解析出錯:

可以看到python指令碼接收到引數的時候會將雙引號剔除,然後該傳入引數已經不符合json資料格式,導致轉換失敗。

解決辦法,最外層使用單引號包裹:

可以看到引數成功傳入並且成功被解析。

注意:此方法只能在Linux作業系統上成功,在Windows上測試依然失敗,不知道原因,有了解的或者有更好的方法的歡迎評論。

Windows上測試結果:

python解析JSON資料

JSON(JavaScript Object Natation)是一種輕量級的資料交換格式,其基於ECMAScript的一個子集。Python中提供了json模組來對JSON資料進行編碼和解碼。

json模組包含以下兩個函數

  • json.dumps():對資料進行編碼
  • jsonloads():對資料進行解碼

範例

import json
data1 = {
    'id': '001',
    'name': '李華',
    'date': '20220115'
}
json_str = json.dumps(data1)
print("Python 原始資料:", data1, type(data1))
print("Python 原始資料:", repr(data1), type(repr(data1)))
print("JSON 物件:", json_str, type(json_str))

程式執行結果:

關於repr()的解釋,一種可以參考是說法是: 函數str() 用於將值轉化為適於人閱讀的形式,而repr() 轉化為供直譯器讀取的形式。

data2 = json.loads(json_str)
print("data2['name']:", data2["name"])
print("data2['id']:", data2["id"])

程式執行結果:

如果是處理json檔案,則需要使用**json.dump()json.load()**來編碼和解碼JSON資料,程式碼如下:

# 寫入資料
with open('data.json', 'w') as f:
    json.dump(data1, f)
# 讀取資料
with open('data.json', 'r') as f:
    data = json.load(f)
    print(data)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com