环境小硕的转行之路-12-序列化和反序列化、模块的引用

利用json和pickle模块序列化代码



序列化定义:把内存的数据对象变成字符串了

序列化


def sayhi(name):
    print(‘hello‘,name)
info = {
    ‘name‘:‘negu‘,
    ‘age‘:22
    # ‘func‘:sayhi()
}
‘‘‘法1‘‘‘
f = open(‘test.text‘,‘w‘)
f.write(str(info))
f.close()
‘‘‘法2‘‘‘
import json#只能处理简单的数据类型:str、list、dict。所以函数不行。主要用于不同语言之间进行数据交互(例如python和java的类不同就不能交换,所以只能简单)。
f = open(‘test.text‘,‘w‘)
f.write(json.dumps(info))
print(json.dumps(info))#输出<class ‘str‘> {"name": "negu", "age": 22}
f.close()
‘‘‘法3‘‘‘
import pickle#和json类似,但有自己的一套语法规则。这样写打开text文件乱码。
f = open(‘test.text‘,‘wb‘)#需要以二进制读取模式打开它
f.write(pickle.dumps(info))#输出一堆二进制数
print(pickle.dumps(info))
f.close()
#pickle可以传入函数,但是在反序列化的文件中必须定义此函数。可以在反序列化文件中改变函数内容,反序列化后的代码跟着改变。

反序列化


‘‘‘法2对应‘‘‘
import  json
f = open(‘test.text‘,‘r‘)
data = json.loads(f.read())#read函数:从文件开头读到结尾
print(data[‘age‘])#输出22
‘‘‘法3对应‘‘‘
    import  pickle
def sayhi(name):
    return print(‘hello2‘,name)#此时执行sayhi 输出hello2
f = open(‘test.text‘,‘rb‘)
data = pickle.load(f)#data = pickle.loads(f.read())可以相互替换json模块同理。
print(data[‘age‘],data[‘func‘](‘negu‘))

不同文件之间自建模块的引用


import os
import sys

print(1,__file__)#获取当前文件的路径(pycharm自作主张加的),在终端设备上只会显示文件名.
print(2,os.__file__)#os模块储存的路径
#os.path.abspath()函数:获取文件的绝对路径
#os.path.dir()函数:获取文件的上一级路径
os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#当前程序返回两级目录
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_dir)#sys.path 返回的是一个列表,此列表包含了已经添加到系统的环境变量了,当我们要添加自己的搜索目录时,可以通过列表的append()方法。
import day1,day2,day3
from day1 import login
login

原文地址:https://www.cnblogs.com/negu/p/11355312.html

时间: 2024-10-06 01:21:09

环境小硕的转行之路-12-序列化和反序列化、模块的引用的相关文章

环境小硕的转行之路-23-异常处理

异常处理 常见的变量代称 1.NameError 变量错误2.IndexError 列表index错误3.KeyError 字典的key不存在4.EOFError iteration到末端5.FileNotFoundError6.8ModuleNotFoundError*7.ValueError 值的类型不匹配以下的应该在写代码的时候就规避掉8.SyntaxError 语法错误9.NameError 变量错误 需要报错的情景以及报错的常见情况 #什么时候最容易出异常:有用户参与的时候,有外界数据

环境小硕的转行之路-25-模块的导入与管理

模块的一些基本概念 什么是模块? ->别人已经写好的一组功能的集合.别人写好的函数,变量,方法放在一个文件里. (这个文件可以被我们直接使用)这个文件就是模块. import os,re,sys,random#alt点进去可以看到都是py文件但也有dll文件(c语言代码编译成的py代码).所以直接写py文件即可. 如何自己写一个模块?->创建py文件,自己写一个名字,符合变量名命名规则+汉字的文件名,这个名字就是模块名了. 本文中my_module中的代码 #__all__ = ['name'

环境小硕的转化之路-17-内置函数拾遗

前言 之前写过内置函数的博文,但觉得这个老师讲的更详细一点,分类也更清楚一点. 将一些常用的内置函数po出来. 内部储存函数相关 lst = [1,2,3] #id(obj) print(id(lst))#打印id #hash(obj) print(hash(lst))#目的是为了存储,计算之后是一个数字.hash值尽量不要重复(某些特定环境下会重复), 是一种另类的加密.所以hash值往往很大.字典就是用hash法进行存储数据的. #打个比方 dict = {'jay':'周董','jj':'

开坑,Unix环境高级编程,转行之路又得缓缓了

不要问我基础,我用了近6年的Linux系统,最早的版本可以追溯到Ubuntu 8.04,常用的命令 VIM基本上是没压力,遇到问题google 配置环境变量 网络环境也不在话下, C语法基本熟练,过去一年,我自学过 数据结构 算法 CSAPP等课程,开坑Unix环境编程压力不大, 开坑的原因主要是为了了解系统底层编程,更接系统实现的原理,预计时间2-3个月,Unix网络编程留明年开坑算了, 估计Spring MVC等web后端框架又得推一推了,说实话,目前我真的不急着去找工作,我缺乏实际的工程经

一名Android开发者的微信小程序填坑之路(2)

前言 上一篇是九月二十七日写的,而这一篇我动笔的时间是十月十日(特殊的日子),中间相隔十三天--当然是因为国庆节.说老实话,这十三天里面我都没有碰和小程序有关的东西--毕竟学习小程序的开发也只是起于兴趣,而平时的工作并不会涉及与其相关的东西--但是在这十三天里,我能明显的感受到小程序热正在逐渐的消退,或者说大家正在逐渐以一种较为平和的姿态接受它的存在,其实这是一件好事.期待公测的到来. 接下来我就直接进入正题了,另外,文末我想和大家分享一下我的国庆节. PS:这篇文章是接着上一篇文章 一名And

Python学习之路12?模块与包

一 模块 1.1 什么是模块? 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 1.2 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script. 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理.这时我们不仅仅可以把

Hybrid小程序混合开发之路 - 数据交互

HTML+CSS是历史悠久.超高自由度.控制精准.表现能力极强.编码简单.学习门槛超低.真跨平台的一种UI界面开发方式. 本文介绍的是微信小程序和H5混合开发的一种数据交互方式. 很多应用在原生界面中混杂着HTML界面 记得xp时代的QQ,有些界面偶尔会弹出熟悉的js错误对话框,还能右键弹出熟悉的IE6的右键菜单,伪装的挺好,差点没认出来,现在的QQ就不知道了. 美团.淘宝这些拥有几乎无限界面的手机App,顶部进度条一亮,这是一个H5 没谁了! Electron!好嗨哟~ 数据交互 使用了HTM

12.C#对象序列化与反序列化

1.对象序列化的介绍 (1).NET支持对象序列化的几种方式 二进制序列化:对象序列化之后是二进制形式的,通过BinaryFormatter类来实现的,这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下. SOAP序列化:  对象序列化之后的结果符合SOAP协议,也就是可以通过SOAP 协议传输,通过System.Runtime.Serialization.Formatters.Soap命名空间下的SoapFormatter类来实现的

python基础教程_学习笔记12:充电时刻——模块

充电时刻--模块 python的标准安装包括一组模块,称为标准库. 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 任何python程序都可以作为模块导入. $ cat hello.py #!/usr/bin/python print "Hello,signjing!" $ ./hello.py Hello,signjing! 假设将python程序保存在/home/ggz2/magiccube/mysh/p