2018年7月23日数据存储到文件中的代码介绍:

程序中的字典都有有独立的数据类型,不能直接按照二进制的方式进行操作
    data_serializer/ds01.py
    TypeError
解决方案:有两种
    1. 通过python提供的标准库,将程序中的数据转换成字符串~进行操作
    2. 通过python提供的标准库,将程序中的数据转换成字节(二进制文件)进行操作


(5)操作程序中的字符串数据[特殊:JSON],json一般做数据类型转换
json模块[python提供的标准库]

(6)操作程序中的对象数据[序列化:反序列化]  pickle一般用作数据在文件中的交互
pickle模块[python提供的标准库]




        json模块:python提供的标准库
*******************************************
#coding:utf-8
#系统标准库json,可以对程序中的数据进行转换

users = {
    "admin":{
        "username": "admin",
        "password": "123",
        "nickname": "老王"
    }
}


#通过json进行转换
import json

#1.数据类型的转换
#将一个字典数据转换为字符串数据[json字符串]
json_str = json.dumps(users)
print(json_str, type(json_str))

#将一个json字符串数据,转换成json对象[其他语言](字典dict)
json_obj = json.loads(json_str)
print(json_obj,type(json_obj))

#2.类型转换的同时操作文件
#json的方式,将程序中的【变量,列表,集合,字典】写入到文件中:
json.dump(users, open("d2.txt","w"))


#json的方式,将文件中的数据读取到程序中
data = json.load(open("d2.txt"))

******************************************************************

                                  pickle模块,python提供的标准库,序列化的方法

# coding:utf-8

# json方式可以进行程序中数据存储到文件

# 但是json转换的结果是字符串数据~文本数据,对于数据的安全性太低

# json标准库的操作:经常用于 数据类型的转换

# 程序中的数据和文件之间的交互~一般通过二进制操作

# Python标准库提供了很多种二进制操作的方式

# pickle、struct(c/c++)...

users = {

"admin": {

"username": "admin",

"password": "123",

"nickname": "老王"

}

}

import pickle

# 二进制操作方式,将数据存储到文件中

#pickle.dump(users, open("d3.txt", "wb"))

# 二进制操作方式,读取数据文件

data = pickle.load(open("d3.txt", "rb"))

print(type(data), data)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏流媒体人生

linux eval

eval 就是执行以下两个步骤 1.第一次,执行变量替换,类似与C语言的宏替代

862
来自专栏决胜机器学习

Redis专题(四) ——Redis排序、消息队列、优化存储

Redis专题(四) ——Redis排序、消息队列、优化存储 (原创内容,转载请注明来源,谢谢) 一、排序 1、命令 SORTkey [A...

4938
来自专栏Laoqi's Linux运维专列

for 循环,while循环,break,continue,exit

3668
来自专栏开源优测

[接口测试_B] 14 pytest+requests实战-参数化

上一篇在一个py文件中,写了一堆test_开头的方法,所有数据和用例都在一个py文件中,本篇尝试读取json文件的测试数据,执行用例。

1654
来自专栏博客园

Redis命令与配置

    slaveof  127.0.0.1 6379(设置Mater的Host以及Port)

1564
来自专栏好好学java的技术栈

深入线程Thread类的start()方法和run()方法

java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都...

980
来自专栏magicsoar

C++内存布局(1)-让new出的两个变量在堆上的地址连续

大家都知道栈的地址按照从高到低的顺序增长的, 而堆的地址是按照从底到高的顺序增长的。 int *n1 = new int(1); int *n2 = new i...

2079
来自专栏mwangblog

python模块

1493
来自专栏知识分享

16-GPRS(Air202)关于多个文件中的变量调用和定时器

大家有没有看这篇 https://www.cnblogs.com/yangfengwu/p/8965054.html

1042
来自专栏好好学java的技术栈

「附数据结构资源」玩转java并发(六):深入线程Thread类的start()方法和run()方法

java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都...

1062

扫码关注云+社区

领取腾讯云代金券