【知识点】

1、时间模块:

(1)时间戳时间,格林威治时间,float数据类型

  英国伦敦的时间:1970.1.1     0:0:0

  北京时间:1970.1.1     8:0:0

(2)结构化时间,时间对象

  时间对象  能够通过.属性名来获取对象中的值

(3)格式化时间,字符串时间,str数据类型

  可以根据你需要的格式来显示时间

 import time

 # 1.时间戳时间 格林威治时间,float数据类型(给机器用的)
print(time.time()) # 2.格式化时间
print(time.strftime('%Y-%m-%d')) # Y——2020,y——20(2020年)
print(time.strftime('%Y-%m-%d %H:%M:%S %A')) # 2020-02-20 20:05:51 Thursday
print(time.strftime('%c')) # Thu Feb 20 20:06:57 2020 # 3.结构化时间
time_obj=time.localtime()
print(time_obj)
print(time_obj.tm_year) # 2020(年)
print(time_obj.tm_mday) # 20(日)

(4)几种时间格式之间的转换

 # 几种时间格式之间的转换
import time print(time.localtime(15000000000))
# time.struct_time(tm_year=2445, tm_mon=5, tm_mday=1, tm_hour=10, tm_min=40, \
# tm_sec=0, tm_wday=0, tm_yday=121, tm_isdst=0) # Timestamp ——> Struct_time ——> Format string
time_obj=time.localtime(15000000000)
format_time=time.strftime('%Y-%m-%d %H:%M:%S %A',time_obj)
print(format_time) # 2445-05-01 10:40:00 Monday # Format string ——> Struct_time ——> Timestamp
s='2008-8-8'
struct_time=time.strptime(s,'%Y-%m-%d')
print(struct_time) # 结构化时间
print(time.mktime(struct_time)) # 1218124800.0

练习题:计算本月一号的时间戳时间

 import time

 ret=time.strftime('%Y-%m-1')
struct_time=time.strptime(ret,'%Y-%m-%d')
print(time.mktime(struct_time)) # 1580486400.0

2、sys模块

(1)sys.path

(2)sys.modules

(3)sys.exit()——结束处理

(4)sys.argv

 import sys

 # 程序启动时,在后面输入用户名,密码,通过sys.argv索取
name=sys.argv[1]
pwd=sys.argv[2] if name == 'alex' and pwd == '':
print('执行代码了')
else:
exit()

3、os模块

(1)创建文件夹:os.mkdir('文件名')    os.mkdirs(‘文件名1/文件名2/文件名3’,exist_ok=True)  有这个文件名就跳过,没有就创建,不报错。

(2)删除文件夹

  os.rmdir(‘文件名1/文件名2/文件名3’)  不能删除一个非空文件夹

  os.removedirs(‘文件名1/文件名2/文件名3’)   递归向上删除文件夹,只要删除当前目录之后,发现上一级目录也为空,就把上一级目录也删掉,如果发现上一级目录有其他文件夹,就停止。

(3)os.listdir()  查看某个路径下的文件夹,返回一个列表

(4)os.sep  当前你所在的操作系统的目录分隔符

(5)os.linesep  输出当前平台使用的行终止符,win下为"\r\n",linux系统下为"\n"

(6)os.pathsep  输出用于分割文件路径的字符串,win下为";",linux系统下为":"   

(7)os.name  输出字符串指示当前使用平台,win—>:‘nt’,Linux—>'posix'

(8)os.system("bash command")  运行shell命令,直接显示

(9)os.popen("bash command") .read()  运行shell命令,获取执行结果(查看当前路径  查看某些信息)

(10)os.path.abspath(path)  返回path规范化的绝对路径,os.path.split(path)  将path分割成目录和文件名二元组返回。

(11)os.path.dirname(path)  返回path目录,第一个元素。  os.path.basename(path)  返回path的文件名。

(12)os.path.exists(path)  如果path存在返回True,否则返回False

(13)os.path.isfile(path)  如果path是一个存在的文件,返回True,否则返回False

(14)os.path.isdir(path)  如果path是一个存在的目录,返回True,否则返回False

(15)os.path.join(path,srt1,str2)  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

 import os

 ret=os.path.join('D:\wendang\PyCharmCode\MyPycharm\day27 sys os模块','aaa','bbb')
print(os.path.abspath(ret))
# D:\wendang\PyCharmCode\MyPycharm\day27 sys os模块\aaa\bbb

(16)os.path.getsize(path)  返回path的大小

4、序列化模块

为什么要序列化?

A、要把内容写入文件  序列化

B、网络传输数据     序列化

(1)json模块:

  能处理数据类型:有限,限制比较多——数字,字典,字符串,列表

  能使用的语言:所有语言

  方法:dump\load (序列化与反序列化)  dumps/loads(直接接触内存)

 import json

 dic={'sss':'aaa','ccc':'qqq'}
str_dic=json.dumps(dic) # print(dic)
# print(str_dic,type(str_dic)) with open('json_dump3','w') as f:
json.dump(dic,f) # 写入 with open('json_dump3') as f2:
print(json.load(f2)) # 读取 ret=json.loads(str_dic)
print(ret,type(ret))

  ① json格式限制1:json格式的key必须是字符串数据类型,如果是数字为key,那么dump之后会强行转成字符串数据类型。

 import json

 # json格式的限制1,json格式的key必须是字符串数据类型
dic={1:2,3:4}
str_dic=json.dumps(dic)
print(str_dic) # {"1": 2, "3": 4}
new_dic=json.loads(str_dic)
print(new_dic) # {'1': 2, '3': 4}

  json支持元组做value,对元组做value的字典会把元组强制转换成列表(json不支持元组做key)

 import json

 dic={'abc':(1,2,3)}
str_dic=json.dumps(dic)
print(str_dic) # {"abc": [1, 2, 3]}
new_dic=json.loads(str_dic)
print(new_dic) # {'abc': [1, 2, 3]}

  ②json格式限制2:json格式中的字符串只能是" "(双引号)

  ③dump限制的问题:

    # 能不能多次dump数据到文件里?  可以多次dump但是不能load出来

    # 想要dump多个数据进入文件,用dumps

 # 想dump多个数据进入文件,用dumps
import json dic={'abc':(1,2,3)}
lst=['aaa',123,'bbb',23.453] with open('json_dump3','w') as f:
str_dic=json.dumps(dic)
str_lst=json.dumps(lst)
f.write(str_dic+'\n')
f.write(str_lst+'\n') with open('json_dump3','r') as f1:
for line in f1:
ret=json.loads(line)
print(ret) #{'abc': [1, 2, 3]} ['aaa', 123, 'bbb', 23.453]

    # 中文格式问题(ensure_ascii=False)

 import json

 dic={'abc':(1,2,3),'country':'中国'}
ret=json.dumps(dic) print(ret) # {"abc": [1, 2, 3], "country": "\u4e2d\u56fd"} new_dic=json.loads(ret)
print(new_dic) # {'abc': [1, 2, 3], 'country': '中国'} ret=json.dumps(dic,ensure_ascii=False)
print(ret) # {"abc": [1, 2, 3], "country": "中国"}

  ④ json的其他参数:是为了用户看的方便,但是会相对浪费存储空间

 # json其他参数
import json data={'username':['李华','二愣子'],'sex':'male','age':16}
# indent为缩进 separators分隔符
json_dic2=json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),ensure_ascii=False)
print(json_dic2)
# {
# "age":16,
# "sex":"male",
# "username":[
# "李华",
# "二愣子"
# ]
# }

(2)pickle模块

  ① pickle支持的dumps和loads

 import pickle

 dic={1:{12,3,5},('a','b'):4}

 pic_dic=pickle.dumps(dic)
print(pic_dic) # bytes类型 new_dic=pickle.loads(pic_dic)
print(new_dic) # {1: {3, 12, 5}, ('a', 'b'): 4}原封不动

  ② pickle支持几乎所有对象的

 # pickle支持几乎所有对象的
import pickle class Student:
def __init__(self,name,age):
self.name=name
self.age=age alex=Student('alex',32)
# print(pickle.dumps(alex)) # bytes类型
ret=pickle.dumps(alex)
小华=pickle.loads(ret)
print(小华.name) # alex

  ③ 对于对象的序列化需要这个对象对应的类在内存中

【注意】dump用的f文件句柄需要以“wb”的形式打开,load所用的f是“r'b”形式打开

  ④ 文件中dump多个值,怎么取出来?

 # 文件中dump多个值,怎么取出来?
import pickle # 写入
# with open('pickle_dump','wb') as f:
# pickle.dump({'k1': 'v1'}, f)
# pickle.dump({'k2': 'v2'}, f)
# pickle.dump({'k3': 'v3'}, f)
# pickle.dump({'k4': 'v4'}, f)
# pickle.dump({'k5': 'v5'}, f)
# pickle.dump({'k6': 'v6'}, f) # 读出
with open('pickle_dump','rb') as f:
while True:
try:
print(pickle.load(f)) # 依次打印出
except EOFError:
break

(3)shelve模块(不建议使用)

  只有一个open功能

 import shelve

 # 写入
# f=shelve.open('shelve_demo')
# f['key']={'k1':(1,2,3),'k2':'v2'}
# f.close() # 读出
f=shelve.open('shelve_demo')
content=f['key']
f.close()
print(content) # {'k1': (1, 2, 3), 'k2': 'v2'}

  shelve的适用场景:

    如果你写定一个文件,改动比较少,读文件的操作比较多,而且你大部分的读取都基于某个key获得某个value


时间:2020-02-21       19:35:09

python学习Day27--time模块、sys模块、os模块和序列化模块的更多相关文章

  1. 模块sys,os

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的. 在Pyt ...

  2. python中模块sys与os的一些常用方法

    sys模块提供了访问或操作与python解释器相关方法与对象. 我们就列举出常用到的知识,以后,随着学习,不断补充. 几个常用到的动态对象: sys.argv,这是一个列表,它包含了所有传递给脚本的命 ...

  3. Python学习总结12:sys模块

    sys模块常用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互. 1. 导入及函数查看 >>> import sys #导入sys模块 >>&g ...

  4. Python学习笔记之读取文件、OS模块、异常处理、with as语法示例

    转:https://m.sogou.com/web/id=4c468b90-3f64-418c-acf8-990b5fe2a757/keyword=python%20os%E6%A8%A1%E5%9D ...

  5. Python学习笔记——基础篇【第五周】——常用模块学习

    模块介绍 本节大纲: 模块介绍 time &datetime模块   (时间模块) random   (随机数模块) os   (系统交互模块) sys shutil   (文件拷贝模块) j ...

  6. (python) 标准模块sys和os的使用

    一.sys模块 包含了系统的相关的功能.我们来学习sys.argv,它包含命令行参数. 例子:定义了一个add函数,用来实现两个整数的相加. #! coding=utf-8 # usersys.py ...

  7. Python学习笔记:import sys模块(argv、path、platform、exit)

    sys模块是Python标准库中自带的一个模块. sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与当前程序之外的系统环境交互,如:Pyth ...

  8. Python学习笔记——基础篇【第六周】——shutil模块

    常用模块之shutil 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中,可以部分内容 def c ...

  9. Python学习笔记——基础篇【第六周】——Subprocess模块

    执行系统命令 可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen*          --废弃 popen2.*           --废弃 com ...

  10. Python学习笔记——基础篇【第六周】——hashlib模块

    常用模块之hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import ...

随机推荐

  1. Oracle索引大全

    文档结构如下: 前言: Oracle 官方文档对索引的描述真是弱透了,对索引的说明就是一坨……,support也没有很好的资料,下面还是用的官方上的内容经过自己的整理加上网上的资料. 索引类型: 索引 ...

  2. python修改列表

    替换元素 效果图: 代码: #创建一个列表 list = ['a','b','c','d','e','f'] print('修改前:',list) #修改元素 指定索引重设其值 list[1] = ' ...

  3. 76.纯 CSS 创作一组单元素办公用品

    原文地址:https://segmentfault.com/a/1190000015607676 学习后效果地址:https://scrimba.com/c/c8PQ3PTB 感想:利用css的制图. ...

  4. 使用Merkle树检测数据不一致(翻译)

    背景 Cassandra的逆熵功能使用Merkle树来检测副本之间的数据不一致. 定义 Merkle树是一种哈希树,其中的叶子包含各个数据块的哈希值,父节点包含其各自的子节点的哈希值.它提供了一种有效 ...

  5. 【C_Language】---最全面的C指针总结,初级程序员必备

    好久没写博客了,重新学习C语言了的基础课程,发现很多东西都忘记的差不多了,闲来无事,总结一下关于指针的知识,希望能帮到像我一样的菜鸟们: 指针,众所周知是C语言的精华所在,不懂指针的话,你就不要说你学 ...

  6. 借助 dp 公式去优化

    题目描述 一天,神犇和 LCR 在玩扑克牌.他们玩的是一种叫做“接竹竿”的游戏. 游戏规则是:一共有 nnn 张牌,每张牌上有一个花色 ccc 和一个点数 vvv,花色不超过 kkk 种.将这些牌依次 ...

  7. dp - 逆序数序列

    对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的 数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样自然数数 ...

  8. Mac下使用Matplotlib无法显示中文的解决办法

    参考:matplotlib图例中文乱码? - 知乎用户的回答 - 知乎 https://www.zhihu.com/question/25404709/answer/309784195 1.下载字体安 ...

  9. Docker + node(koa) + nginx + mysql 线上环境部署

    在上一篇 Docker + node(koa) + nginx + mysql 开发环境搭建,我们进行了本地开发环境搭建 现在我们就来开始线上环境部署 如果本地环境搭建没有什么问题,那么线上部署的配置 ...

  10. LeetCode 第七题--整数反转

    1. 题目 2.思路 1. 题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321示例 ...