python读写json、格式化写入json文件_python json 格式化输入文件-程序员宅基地

技术标签: python  前端  json  html  开发语言  

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON在python中分别由list和dict组成。

这是用于序列化的两个模块

  • json: 用于字符串和python数据类型间进行转换
    Json模块提供了四个功能:dumps、dump、loads、load
  • pickle: 用于python特有的类型和python的数据类型间进行转换
    pickle模块提供了四个功能:dumps、dump、loads、load

json.dumps()把数据类型转换成字符串
json.dump()把数据类型转换成字符串并存储在文件中
json.loads()把字符串转换成数据类型
json.load()把文件打开从字符串转换成数据类型

json是可以在不同语言之间交换数据的,而pickle只在python之间使用。
json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格式、类对象!josn就不行了。而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

案例1 dumps

将python中的字典数据编码为 JSON字符串 字符串

1 import json
2 
3 test_dict = {'one':1, 'two':{2.1:['a', 'b']}
4 print(test_dict)
5 print(type(test_dict))
6 #dumps 将数据转换成字符串
7 json_str = json.dumps(test_dict)
8 print(json_str)
9 print(type(json_str))

输出:

{'one':1, 'two':{2.1:['a', 'b']}
<class 'dict'>
{"one":1, "two":{2.1:["a", "b"]}
<class 'str'>

案例2 loads

用于解析JSON数据,返回python中的的字典数据类型

10 new_dict = json.loads(json_str)
11 print(new_dict)
12 print(type(new_dict))

输出:

{'one':1, 'two':{2.1:['a', 'b']}
<class 'dict'>

案例3 dump

:将python dict数据写入json文件中

1 with open("../config/record.json","w") as f:
2     json.dump(new_dict,f)
3     print("加载入文件完成...")

json文件内容:

1 {"one":1, "two":{2.1:["a", "b"]}

案例4 load

把文件打开,并把JSON字符串变换为python dict数据类型

1 with open("../config/record.json",'r') as load_f:
2     load_dict = json.load(load_f)
3     print(load_dict)
4  	  print(type(load_dict))

输出:

{'one':1, 'two':{2.1:['a', 'b']}
<class 'dict'>

案例5 格式化写入json文件

两种方法均可以实现:
1、将python字典数据用dumps()方法编码成JSON字符串,然后再写入json文件中

with open("../config/format_json.json", 'w') as write_f:
	write_f.write(json.dumps(load_dict, indent=4, ensure_ascii=False))

2、直接用dump()方法将python字典数据写入json文件中

with open("../config/format_json.json", 'w') as write_f:
	json.dump(load_dict, write_f, indent=4, ensure_ascii=False)

格式化写入json后,文件内容:

{
	'one': 1,
	'two': {
		2.1: [
			'a',
			'b'
		]
	}				
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46416934/article/details/123442163

智能推荐

Redis 主从复制-哨兵-集群 相关部署_windows redis 主从复制部署-程序员宅基地

文章浏览阅读175次。Redis 主从复制+哨兵+集群一.主从复制-哨兵-集群二.主从复制1.主从复制的作用2.主从复制流程3.部署Redis 主从复制三.哨兵模式1.哨兵模式的原理2.哨兵模式的作用3.哨兵结构由两部分组成,哨兵节点和数据节点部署哨兵模式四.集群模式1.集群的作用,可以归纳为两点2.Redis集群的数据分片3.以3个节点组成的集群为例4.Redis集群的主从复制模型5.Redis集群部署一.主从复制-哨兵-集群1.主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复_windows redis 主从复制部署

看完还不懂HashMap算我输(附职场面试常见问题)_hashmap原理详解,看不懂算我输(附面试题)-程序员宅基地

文章浏览阅读1.3w次,点赞181次,收藏596次。HashMap的原理与实现版本之更迭:–》JDK 1.7 : Table数组+ Entry链表;–》JDK1.8 : Table数组+ Entry链表/红黑树;(为什么要使用红黑树?)一问HashMap的实现原理你看过HashMap源码吗,知道底层的原理吗为什么使用数组+链表用LinkedList代替数组可以吗既然是可以的,为什么不用反而用数组。重要变量介绍:..._hashmap原理详解,看不懂算我输(附面试题)

PHP实现跨域多图上传_php 上传图片流跨域怎么做-程序员宅基地

文章浏览阅读959次。干货:问题:在a.com上上传图片至b.comhtml(a.com)<div class="box_03"> <iframe style="width:100%;height:100%;" frameborder="0" scrolling="no" src="/picupload/ming?imgurl=&shuiyin=&uploadUr..._php 上传图片流跨域怎么做

Cisco(46)——HSRP和VRRP_hsrp 可以在svi口配置么-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏2次。实验拓扑:实验说明:1.把SW3模拟成三台PC,配置三个VLAN对应的SVI地址。2.HSRP:SW1做vlan 10的活动设备,SW2做vlan 20的备份设备;SW1做vlan 10的备份设备,SW2做vlan 20的活动设备;3.VRRP:SW1做vlan 30的Master,SW2做vlan 30的备份设备。4.down掉环回口,检查数据包的路径。实..._hsrp 可以在svi口配置么

kafka-0.8.2.1-src编译报错解决办法_to honour the jvm settings for this build a new jv-程序员宅基地

文章浏览阅读8k次。今天编译kafka-0.8.2.1-src源代码,发现一个问题。编译始终报错,错误如下:lizhitao@users-MacBook-Pro-2:~/mt_wp/open_source/kafka-platform/kafka-0.8.2.1-src$ gradle jar_core_2_10_4 --stacktraceTo honour the JVM settings for this bu_to honour the jvm settings for this build a new jvm will be forked. please c

微信支付退款 java_Java后台实现微信支付和微信退款-程序员宅基地

文章浏览阅读600次。微信支付流程都是我自己工作中开发的,亲测可用,不喜勿喷。controller中我是这么写的,你们需要根据自己的业务需求改动。ResponseBean是我自己封装的,你们可以改成你们想要的形式。/*** 微信统一下单接口* @return*/@RequestMapping(value = "/doUnifiedOrder", method = RequestMethod.POST)public Re..._java+微信支付 dounifiedrefund

随便推点

PDO / MySQL:如何优化内存消耗大的结果集查询-程序员宅基地

文章浏览阅读140次。I'm having a strange time dealing with selecting from a table with about 30,000 rows.It seems my script is using an outrageous amount of memory for what is a simple, forward only walk over a query res..._pdo_mysql.cache_size

layui实现表格合并单元格,设置不同背景色_layui tablemerge 合并背景-程序员宅基地

文章浏览阅读1.0k次。最近在使用layui的过程中,遇到了表格合并单元格,设置不同底色的问https://www.hixiaoe.com/题。在此总结,大家一起学习。效果如下:同一组新闻的底色相同实现代码:<script> layui.config({ base: '/static/' //静态资源所在路径 }).extend({ index: 'admin/lib/index' //主入口模块 .._layui tablemerge 合并背景

kali2020.3详细安装教程|避免踩坑版_kali2020.3安装-程序员宅基地

文章浏览阅读3.8k次,点赞10次,收藏18次。Kali Linux系统作为白帽、黑帽最受欢迎的渗透测试系统,你如果是一个安全渗透专家或者网络安全管理员,必须要学会慎重并且合理地利用这个系统,因为对目标系统造成的实质伤害会带来法律的约束以及制裁!1、Kali Linux下载官网下载镜像:下载链接:https://www.kali.org2、安装配置我这里使用的虚拟机软件是 VMware 15,名字随便看需要,也可按默认配置建议选4G,也可以选2G内存默认,下一步默认,下一步默认,下一步默认,下一步这里建议将磁_kali2020.3安装

消息队列mysql redis那个好,redis可以做消息队列吗-程序员宅基地

文章浏览阅读131次。应用场景:例如秒杀。瞬时大量写入订单到数据库,导致数据库无法及时响应。此时可以采用Redis做消息队列,把所有需要写入的数据先写入Redis消息队列中,然后同时在服务器开启php-cli进程循环读取队列中的数据,异步写入数据库。使用redis做消息队列可能会出现消息丢失的情况,因为没有消息接收的确认机制。大型程序,应该使用类似RabitMQ来做专业消息队列。1、使用publish/subscrib..._mysql 做队列好还是redis做队列

linux环境安装apache服务器_no such command: nginx. please use /usr/bin/yum ---程序员宅基地

文章浏览阅读1.3k次。本文转自:https://www.cnblogs.com/wcwnina/p/8029156.htmlApache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将..._no such command: nginx. please use /usr/bin/yum --help

LINUX-基础回顾_linux 粘贴之后 只做提示-程序员宅基地

文章浏览阅读560次。xShell:最常用的软件!远程操作linux,打开命令行终端!终端模拟软件。export LANG=“zh_CN.UTF-8” #中文export LANG=“en_US.UTF-8” #英文查看linux的ip地址:ifconfig;Linux无法使用ifconfig命令查看ip地址是因为没有安装net-tool所以执行下面的语句进行安装。_linux 粘贴之后 只做提示