常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。
1 使用python编写的代码(.py文件)
2 已被编译为共享库或DLL的C或C++扩展
3 包好一组模块的包
4 使用C编写并链接到python解释器的内置模块
2、为何要使用python模块
如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。
随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用,
4、本文写道的基础常用模块说明
2、显示扑克牌的花色和数字
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。运行“type(time.time())”,返回的是float类型。是给计算机看的
(2)格式化的时间字符串(Format String): ‘’:给人看的
(3)结构化时间(struct_time)以元组的形式显示 :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等),计算用的
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
1、时间戳、字符串格式时间和结构化时间
2、单独获取结构化时间的某一个元素
3、时间之间的转换:时间戳和字符串格式的时间是不可以直接转换的,他们之间的转换需要通过结构化的时间来进行时间转换
1、时间戳和结构化时间的转换
print(time.gmtime(t)) #将时间戳转化为格林威治的格式化时间(中国比格林威治的时间快八个小时)
3、随机选择返回一个值
os模块是与操作系统交互的一个接口
python里的三个序列化的模块:
#json -- (五星):通用的序列化格式,基本上所有的开发语言都用的序列化格式(只有很少的一部分数据类型能够通过json转化成字符串)
#pickle -- (四星):python独有的序列化类型,所有python中的数据类型都可以转化成字符串形式,pickle序列化的内容只有python能理解,部分反序列化依赖python代码。
#shelve -- (三星):python3的新模块,序列化句柄(使用句柄直接操作,非常方便)
#从数据类型 --> 到字符串的过程叫作序列化(为了方便存储和网络传输)
#从字符串 --> 到数据类型的过程叫作反序列化
dumps和loads是再内存里对数据类型进行序列化,然后显示出来!!
注:json支持序列化的类型有:数字、字符串、列表、元组(元组是序列化成列表,反序列化也是反序列化成列表)
dump和load是将序列化的类型写入到文件里,然后从文件里读取出来进行反序列化,json的load不可以多次load。
2.1、当遇到中文时使用dump将序列化后的值写入到文件里时,查看文件出现bytes类型的乱码的解决办法(不影响load反序列化)
问题:dump和load可不可以按行写入到文件里,然后按行读取?
答:不可以,具体看如下代码
现在有需求需要实现序列化后的数据按行写入文件然后在按行读取出来如何实现?看下面代码:
这样就实现了序列化后的数据按行写入到文件,然后再按行读取的功能了!!
3、json的一些其他参数说明
注:pickle对文件的操作都需要加b,因为pickle是序列化为bytes类型,pickle支持分次从文件里load内容并进行反序列化
2、shelve模块的小问题(以只读的方式打开文件还可以直接对文件进行修改)
来源于网友分享,如有不妥联系删除