Python模块
time模块
#调用模块:import+模块名
import time;
#获取当前时间戳 linux从70到38的毫秒数
print(time.time());#此方法计算系统执行的时间
#休眠当前线程,阻塞住当前的线程,单位是秒
time.sleep(5);
print('休眠结束')
#单位为秒,例如:1.5e-06 科学计数法,1.5*10^6
#计算cpu执行时间
print(time.clock())
#获取世界标准时间
print(time.gmtime())
#获取本地时间,结果为元组tuple
print(time.localtime())
#格式化时间y:年 m:月 d:日 H:时 M:分 S:秒 将时间元组转换成为有格式的字符串
print(time.strftime('%y-%m-%d %H:%M:%S',time.localtime()))
#将格式字符串转换为元组,好处是可以通过索引分别获取每个元组
print(time.strptime('18-10-23 15:00:07','%y-%m-%d %H:%M:%S'))
#ctime将时间戳转换成时间字符串类型 CHAR(字符串) CDATA(XML中的数据:)
节点的内容如果为字符串CDATA
print(time.ctime(time.time()))
random模块
#调用模块
import random
#生成0~1之间的随机数 包含小数
print(random.random())
#获取一个范围之中的随机整数 既包含a 又包含b
print(random.randint(0,10))
#随机选择序列中的元素
print(random.choice([1,2,3,4,5,6,7]))
#randrange(a,b) a~b之间的随机整数 不包含b
print(random.randrange(0,10))
os模块
#调用操作系统的模块 是重点
import os#自适应操作系统
#获取当前py文件运行的目录
print(os.getcwd());
#切换目录 cd
os.chdir('F:\\Demo\\demo4');
#获取当前目录 python . ..
print(os.curdir);
#上一级目录 ..
print(os.pardir);
#创建目录
os.mkdir('我是目录')
#删除目录的操作必须是空目录 Linux rm
os.rmdir('我是目录')
#创建嵌套的目录
os.makedirs('我是目录/demo/demo1')
#删除嵌套的目录
os.removedirs('我是目录/demo/demo1')
#展示当前目录下的所有文件和目录 组装成为一个列表
lists=os.listdir('F:\\Demo\\demo4')
print(lists)
#删除文件
os.remove('HelloWorld')
os.rename('../demo3','demo7')
#查看文件的详细信息
print(os.stat('内置函数.py'))
#文件分隔符 windows:\ Linux:/
print(os.sep)
#文件分隔符字符串 环境变量; Linux:
print(os.pathsep)
#行的终止符 \n
print(os.linesep)
#直接执行shell命令的方法 windows gbk python utf-8
os.system('ipconfig')
#获取系统环境变量 封装成了字典
print(os.environ)
#获取文件的绝对路径
print(os.path.abspath('内置函数.py'))
#将文件名和目录以元组的形式进行分割
print(os.path.split('F:\Demo\demo4\内置函数.py'))
#获取文件的目录名
print(os.path.dirname('F:\Demo\demo4\内置函数.py'))
#获取文件名
print(os.path.basename('F:\Demo\demo4\内置函数.py'))
#判断改文件是否存在
print(os.path.exists('F:\Demo\demo4\内置函数1.py'))
#判断是否为目录
print(os.path.isdir('F:\Demo\demo4'))
#将两个路径组合在一起输出
print(os.path.join('F:\Demo\demo4','demo5\demo6'))
re模块
#操作正则表达式
import re
str='aa38bb56'
#\d 0~9
#findall方法:通配整个字符串 直到到字符串的末尾 把所有符合的条件的字符都获取出来
result=re.findall('\d{2}',str)
print(result)
#search 检索
str=r'D:\hehe.txt'; #取消掉\的特殊语义
#search只通配一次
str=re.search('^\w+@\w+\.\w+$','[email protected]')
print(str.group())#返回的是字符串
#正则分组 组名:name
strs=re.search('(?P\w{3})','cmy')
#根据组名获取数据
print(strs.group('name'))
#只有一次
result=re.match('ABC','ABC1234ABC')
print(result.group())
#按照表达式将字符串分割为列表
lists=re.split('\.','a.b.c.d')
print(lists)
#将字符串中的一部分替换为另一部分
print(re.sub('a','呵呵','aabbcc'))
#面向对象的思想 compile方法生成了一个正则表达式对象
reg=re.compile('^(1[0-2]\d)|(\d{1,2})$')
g=reg.search('-5')
print(g.group())
configparse模块
#生成一个ini的配置文件
#导入模块
import configparser
#生成文件句柄
config=configparser.ConfigParser()
#生成配置组 ini 文件 [mysqld] default-character-set=utf-8 skip-grant-all
mysql:my.ini文件
config['namespace']={ #K,V
'name':'zhangsan',
'age':18
}
#在ini文件中 默认的配置组 [DEFAULT]
with open('example.ini','a',encoding='utf-8') as file:
config.write(file);
#读取ini文件中内容
config.read('example.ini');
#调用sections方法生成字典的结构数据 发现只有一个namespace组 没有
DEFAULT组
print(config.sections());
#打印DEFAULT组的内容
od=config.defaults()#有序列表
for k,v in od.items():
print("key:%s,Value:%s"%(k,v))
print(config['namespace']['name'])
#打印[DEFAULT] 配置组下的配置信息
print(config['DEFAULT']['port'])
hashlib加密模块
#通过算法加密 为了保证数据在传输的过程中安全性 序列化(程序传输数据的一种方式)
#rsa git() Linux(ssh免密码登录)
#md5 号称世界上安全性最高的加密算法 不可逆 md5在线解密器
#BASE 64 可逆
import hashlib
#m对象 一个加密器
m=hashlib.sha256();
#加密设置字符集
m.update('cmy'.encode('utf-8'))
#输出密文
print(m.hexdigest())
#sha256
logging模块
#log 日志文件 .log 文件作为后缀 日志也是解决bug非常好的方式
#设置日志的输出级别
import logging
#K:V
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a,%d %b %Y %H:%M:%S',
filename='test.log'.encode('utf-8'),
filemode='w')
logging.debug('debug')
logging.info('info')
logging.warning('waring')
logging.error('error')
logging.critical('critical')
#获取日志对象
logger=logging.getLogger('debug');
#配置日志文件的handler
fh=logging.FileHandler('logging.log');
#配置Console的Hanlder
sh=logging.StreamHandler();
#日志打印的格式
format=logging.Formatter('%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s');
fh.setFormatter(format)
sh.setFormatter(format);
#存回Logger对象
logger.addHandler(fh);
logger.addHandler(sh)
#输出了五个级别 3个级别会在Console上
logger.debug('debug')
logger.info('info')
logger.warning('waring')
logger.error('error')
logger.critical('critical')
sys模块
#python程序的命令行参数
import sys
#第一个参数是PY文件的绝对路径
print(sys.argv)
#返回的是PYTHON程序中模块的搜索路径 一个模块就是一个.py文件(寻找解释器中内置的.py文件)
print(sys.path)
#PYTHON解释器的版本
print(sys.version)
#获取到PYTHON程序所能接受的最大整数值 ±
print(sys.maxsize)
#返回操作系统的平台名称 win7 32 位
print(sys.platform)
#退出程序 强制关闭python程序的运行
#sys.exit(0)
#input 允许用户从Console输入
sys.stdout.write('please:')
#打印readline获取的列表中的所有元素
value=sys.stdin.readline()[:-1]
print('您输入了:%s'%value)
#print('程序还没退出')
json模块
#序列化模块:什么叫 序列化:序列化 是程序传输数据的一种手段,比如:内存→硬盘 硬盘→内存 线程→线程
#持久化:将程序内存中的数据保存在硬盘上
#通过json模块 将内存中的数据持久的保存在硬盘上的某个文件中
import json
#字典变量
dicts={'name':'zhangsan','age':18};
#二进制的数据内容
data=json.dumps(dicts);
with open('data','w',encoding='utf-8') as file:
#调用write方法写入文件
file.write(data);
#反序列化:序列化取反的意思 内存到硬盘(序列化) 硬盘到内存(反序列化)
f=open('data','r',encoding='utf-8');
data=f.read();
#将字典获取出来
dicts=json.loads(data);
print(dicts)
#序列化和反序列化的操作 省略write和read操作 交给Python底层去实现
#序列化的数据
str='hiahia';
file=open('data','w',encoding='utf-8');
json.dump(str,file);
file=open('data','r',encoding='utf-8');
name=json.load(file);
print(name);
shelve模块
import shelve #比json更简单 只能是字典格式的 且key必须是字符串
#文件对象 无需借助open函数创建文件对象
file=shelve.open('shelve');
'''
#.bak dat dir
file['info']={'name':'张三'};
'''
#反序列化
data=file.get('info');
print(data);#shelve和json相比 操作更简单 且数据的安全性更高