模块——常用模块

time模块

时间的格式:
1)时间戳:从1970年到现在经历的秒数
time.time()

2)按格式:2020-3-30 11:11:00
time.strftime('%Y-%m-%d %H:%M:%S %p')
时分秒:也可以用%X

3)结构化的时间:用于获取当前时间的某一个部分
res = time.localtime()
res.tm_year

datetime模块

datetime.datetime.now()
格式化时间
datetime.datetime.now() + datatime.timedelta(days = -3)
计算三天前的时间,time模块这个就不方便了


time.mktime(参数)  将结构化转为时间戳

time.localtime(参数)  将时间戳转为结构化时间

time.gmtime()  世界标准时间,结构化时间

time.strftime('...',time.localtime(或者参数))  将结构化时间转为格式化时间

time.strptime('2020-3-30','%Y-%m-%d')  将格式化时间字符串转为结构化时间

格式相互转化以结构化时间为中间站

time.asctime()  得到:Mon Mar 30 09:52:14 2020


datetime.datetime.utcnow()
datetime.datetime.fromtimestamp(时间戳)

random模块

random.random()  (0,1) >0 <1 float
random.randint(1,3)  [1,3] >=1 <= 3 int
random.randrange(1,3)  [1,3) >=1 < 3 int
random.choice([...])  选出一个来
random.sample([...],2)  随机取出两个
random.uniform(1,3)  (1,3) float
random.shuffle(item)  洗牌

随机验证码

chr将数字转为ASCII码的数字或字母


os模块

os.getcwd()  获取当前工作目录
os.chdir(参数)  切换工作目录
os.makedirs()  创建多层文件夹
os.removedirs()  删除这个文件上面层级的空文件夹,此文件夹没有子文件夹
os.mkdir()  生成单级目录
os.rmdir()  删除单级空目录
os.listdir()  查看文件夹下面的文件和文件夹
os.listdir('.')  看当前文件夹
os.path.getsize()  查看路径下文件的大小
os.remove()  删除
os.rename()  重命名
os.system('系统命令')  执行系统命令
os.environ  环境变量:key,value 必须为字符串,将路径变量添加到全局,用于软件的执行时,全部都用到
sys.path  是导入模块的变量
PATH  执行系统命令的变量
os.path.abspath  返回绝对路径,路径分隔符为平台的默认
__file__  /////////////
os.path.split()  元组(文件夹,文件名)
os.path.dirname()  获取上层文件夹路径
os.path.basename()  获取当前文件
os.path.isabs()  是否是绝对路径
os.path.join()  连接路径,以根目录开始连接
os.path.isfile()  判断是否是一个文件
os.path.isdir()  判断是否是一个文件夹


3.5 以后

Path 模块:res = Path(__file__).parent.parent
res = Path('...') / '...' 拼接路径,,,
res.resolve()  把斜杠换成正规的平台默认的符号


sys模块

sys.path  模块查找路径
sys.argv  接收程序外的输入
python run.py 1 2 3
argv 接收 1 2 3
argv = [run文件路径,1,2,3]

进度条:
'[%-50s]'%'#'
左对齐50位
for
    print('\r[%-50s]'%'#',end = '')


shutil模块

对文件进行各种操作
压缩

序列化和反序列化
json&pickle
序列化是指把内存的数据类型转换为一个特定的格式内容

内存中的数据 ——> 特定的格式(json或pickle) :序列化
特定的格式(json或pickle)——> 内存中的数据  :反序列化

序列化的内容:
用于存储 = 》 用于存档
传输给其它平台使用 = 》 跨平台数据交互

专用于python:pickle :存档
通用于所有语言:json 

import json

res = json.dumps(True)
序列化,json格式
res = json.loads(res)
反序列化,Python可以识别的数据类型
序列化结果,写入文件的简单方法:
with ... as f:
    json.dump('...',f)
with ... as f:
    l = json.load(f)

json 格式兼容所有语言的数据类型,不能识别某一语言的特定类型

loads:3.5 不能反序列化 bytes

l = json.loads(b'[1, "aaa", true, false]')
print(l, type(l))

with open('json.txt',mode='rb') as f:
    l=json.load(f)

# 了解
# l = json.loads(b'[1, "aaa", true, false]')
# print(l, type(l))
# TypeError: the JSON object must be str, not 'bytes'

# with open('json.txt',mode='rb') as f:
#    l=json.load(f)
# TypeError: the JSON object must be str, not 'bytes'

# res=json.dumps({'name':'哈哈哈'})
# print(res,type(res))

# res=json.loads('{"name": "\u54c8\u54c8\u54c8"}')
# print(res,type(res))



pickle.dumps loads dump load

猴子补丁:

所有后引用的同一个模块都指向第一次引用模块的地址,所以,改进模块,要在首次

导入模块的位置修改,比如说start.py里改

ujson 和 json 使用方式一样,但是速度更快

json.dumps = ujson.dumps

import ujson as json

每个文件,都要改,只是起了个别名,在主文件名称空间里的,不影响json空间
所以,不合适

可以替换,,,

pickle.dumps loads dump load

import pickle

res = pickle.dumps()
bytes

python2:
pickle.dump('你',f,protocol = 2)

xml 模块

shelve 模块

configparser 模块 as con
ConfigParser :Python2

配置文件:注释:# ;
[section1]
k1 = v1
k1 : v1

conf = con.ConfigParser()
conf.read('...')
获取配置文件
conf.sections()  得到所有的section
conf.options('section1')  获取下面的option,查看标题section1下所有key
conf.items('section1')  获取配置元组,('k1','v1'),查看标题section1下所有items
res = conf.get('section1','user')  获得user的值,str
conf.getboolean('section1','is_admin')  直接获得bool值
getfloat
getint

hashlib 模块

哈希:算法,为该算法传入值,经过运算得到hash值,
传入的值一样,得到的hash值必然一样,
不能通过hash值反推出原来的值,
得到的值长度是一定的

加密
撞库破解
防止撞库:加盐
提升撞库成本,

m.update('天王'.encode('utf-8'))
m.update('alex3714'.encode('utf-8'))
m.update('盖地虎'.encode('utf-8'))
加入一些无关紧要的东西,
密文字典,如何截获密文
验证完整性

import hashlib

m = hashlib.md5('wanglin'.encode('utf-8'))  得到密文的密码
m.update('hello'.encode('utf-8'))
m.updete('world'.encode('utf-8'))
res = m.hexdigest()

验证:取样验证


subprocess 模块

import subprocess

obj = subprocess.Popen('系统命令',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIP)
obj 对象
obj.stdout.read()  正确的结果
res = obj.stderr.read()  错误的结果
res.decode('gbk')

; 分隔好几个命令,其中有运行正确的,也有错误的,可以分别输出

posted @ 2020-03-30 16:23  pythoner_wl  阅读(128)  评论(0编辑  收藏  举报