解決非程式提交錯誤json導致功能異常,生成json檔案如果不合法不寫入。
使用 json 函式需要匯入 json 庫:import json。
函式描述
json.dumps
將 python 物件編碼成 json 字串
json.loads
將已編碼的 json 字串解碼為 python 物件
json.load
傳入檔案路徑讀取+解碼為 python 物件
詳細使用:python json
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys
import json
from colored import colored
# 檢測json檔案工具
# @author l2xin
class
jsoncheckhelper
:# 檢測json目錄下的所有.json檔案是否合法 public
@staticmethod
defcheckjsondir
(rootdir):if
not os.path.exists(rootdir)
:print
(colored.red(
"[jsondir.check warning]]"),
"rootdir:%s not exists "
%(colored.red(rootdir)))
return
#列出資料夾下所有的目錄與檔案
list
= os.listdir(rootdir)
for i in
range(0
,len
(list))
: path = os.path.join(rootdir,
list
[i])
if os.path.isfile(path)
: jsoncheckhelper.__checkjsonfile(path)
else
: jsoncheckhelper.checkjsondir(path)
# 檢測單個.json檔案是否合法 private
@staticmethod
def__checkjsonfile
(filepath)
:if filepath.find(
".json")==
-1:return
with
open
(filepath,
"r+"
, encoding=
'utf-8'
)as one_file:
try:
json.load(one_file)
#兩種寫法一樣效果
#json.loads(one_file.read())
except json.jsondecodeerror as err:
print
(colored.red(
"[json.load error]"),
"filepath:%s %s"
%(filepath, err)
)
注:colored 為列印輔助類,詳情見另一篇:
python終端顯示彩色字元(封裝了colored類)
jsoncheckhelper.checkjsondir(sys.path[0]
+"/json_client"
)
[jsondir.check warning]] rootdir:/users/l2xin/documents/doc/json_client not exists
[json.load error] filepath:/users/l2xin/documents/doc/jsonclient/gmconfig_client.json expecting 『,』 delimiter: line 10 column 71 (char 617)[json.load error] filepath:/users/l2xin/documents/doc/jsonclient/新建/gmconfig_client.json expecting 『,』 delimiter: line 10 column 71 (char 617)
Python 遍歷目錄下的所有檔案
allfilenum 0 def printpath level,path global allfilenum 列印乙個目錄下的所有資料夾和檔案 所有資料夾,第乙個欄位是次目錄的級別 dirlist 所有檔案 filelist 返回乙個列表,其中包含在目錄條目的名稱 google翻譯 files o...
Python遞迴遍歷目錄下所有檔案
自定義函式 import os path d temp del a def gci path this is a statement parents os.listdir path for parent in parents child os.path.join path,parent print ...
python遍歷目錄下的所有檔案和目錄詳細介紹
test a d g g.txt test a d a.txt test a e b c 1.txt 2.txt 1 獲取test目錄下的所有檔案 for root,dirs,files in os.walk r d test for file in files 獲取檔案所屬目錄 print roo...