python---json檔案寫入

一只野生的小胖鱼發表於2024-07-27

使用到的知識點:os模組執行linux指令、json.dump()、with open as f

程式碼實現

import sys

import os

import json

# 向json檔案file中新增內容data,其中data的型別為字典

def write_json(file, data):

# 如果檔案存在,則刪除

if (os.path.exists(file)):

os.system(f"sudo rm {file}")

print(f"檔案{file}刪除成功")

# 建立目標json檔案file,並賦予許可權

# 如果在root使用者執行,可以刪除sudo

# os.system():用於執行linux指令

os.system(f"sudo touch {file} && sudo chmod 777 {file}")

# 開啟檔案file

with open(file, 'r+', encoding='utf-8') as f:

# 把data資料寫入json檔案中

json.dump(data, f, ensure_ascii=False, indent=2)

print("檔案建立成功並且已寫入檔案!!!")

if __name__ == '__main__':

json_file = sys.argv[1]

data = {}

data['name'] = "張三"

data['age'] = 18

data['sex'] = "女"

data['score'] = {}

data['score']['語文'] = 89

data['score']['數學'] = 91

data['score']['英語'] = 98

write_json(json_file, data)

程式碼摘錄解讀

1、with open(file, 'r+', encoding='utf-8') as f:

也可以使用寫作f = open()。但是這樣的話,如果存在檔案異常時,檔案無法關閉。而這裡使用with的好處就是,即使開啟失敗,也可以自動執行f.close()來關閉檔案

常見檔案操作mode:

w: 只寫入,如果檔案已有內容,會先清除已有內容

r: 只讀

a: 追加內容,在已有檔案的末尾追加

r+: 用於讀寫,也會清除已有內容

這塊內容很好查詢,這裡就不多列舉了

2、json.dump(data, f, ensure_ascii=False, indent=2)

把內容data寫入使用open開啟的檔案f中

ensure_ascii=False:如果寫入中文漢字,會亂碼。加上這個引數後則不會亂碼

indent=2:如果沒有這個引數,則會把內容在一行顯示,不會換行和縮排;而這個引數的作用就是使寫入內容換行、縮排。方便閱讀

最終寫入效果

相關文章