使用到的知识点: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:如果没有这个参数,则会把内容在一行显示,不会换行和缩进;而这个参数的作用就是使写入内容换行、缩进。方便阅读
最终写入效果
标签:文件,python,os,写入,---,json,file,data From: https://www.cnblogs.com/xiaopangyu/p/18327731