常用模块
0、少用全局变量:1、不安全,2、会一直占着内存不放
1、函数有多个返回值的时候,会把返回值放到元组
def hello(a,b,c,d):
return a, b, c, d
print(hello('as','sas','78','8ij')) 运行结果:('as', 'sas', '78', '8ij')
2、列表推导式
num=[1,2,3,4,5,6] #int类型
new=[]
for i in num:#循环num 取每个值,放到新的list中
o=str(i)#int转换字符串
new.append(o)
print(new)
列表推导写法
num=[1,2,3,4,5,6] #int类型
new=[str(a)for a in num]
print(new)
3、一个函数尽量实现一个功能
模块time
4、时间的表现形式:1)格式化好的时间2)时间戳 :从unix元年到现在累计的秒数
获取当前时间戳
import time
print(time.time()) 时间戳,小数点位数
print(int(time.time())) 时间戳 取整数
import time
new=time.strftime('%Y%m%d%H%M%S') 取格式化的当前时间
print(new)
5、print(time.gmtime(
1516434455
))默认为空,取值标准时区的时间元组,与当前时间差8个小时, 当格式化时间和时间戳相互转换时,需要先转换成时间元组
如果传入了一个时间戳 那么就把时间戳转换成时间元组
print(time.timezone)和标准时区相差几个小时
6、时间戳转格式化时间
print(time.localtime(时间戳)) 取值当前时间的时间元组 ,默认为空,如果传入时间戳,则取时间戳的时间元组
import time
def s(sjc,gs='%Y%m%d%H%M%S')
a=time.localtime(sjc) 先转换成时间戳对应的时间元组
res=time.strftime(gs,a) 再去把时间元组 转换成格式化时间
return res
a=s(12121212)
print(a)
7、格式化时间转换时间戳
import time
print(time.strptime('20180119','%Y%m%d')) 把格式化时间转换成时间元组
运行结果:
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=19, tm_isdst=-1)
函数化:
def s(gshsj,gs):
t=time.strptime('20180119','%Y%m%d') 把格式好的时间转换成时间元组
res=time.mktime(t) 把时间元组转换成时间戳
return res
a=s('20180119')
print(a)
8、如何获取到一天前的时间->当前时间的时间戳+秒数
模块datetime
import datetime
print(datetime.datetime.today()) 获取今天时间 到秒 2018-01-26 21:12:12 121212
print(datetime.datetime.now()) 获取当前时间,同上
print(datetime.datetime.today().strftime('%Y')) 获取当前时间,可判断显示年月日时分秒某项
print(datetime.datetime.today()+datetime.timedelta(1)) 获取当前时间+1或者-1天的时间 ,显示到时分秒毫米
print(datetime.date.today()) 获取今天的时间,显示年月日 2018-01-23
模块random
9、
res=random.uniform(1,9)取1-9之间的随机小数
print(round(res,2)) 取两位小数,如果最后一位是0则不显示
print(random.random()) 取0-1之间的随机小数 不能指定范围
10、洗牌 打乱顺序
import random
a=['a','b','c','d','e']
random.shuffle(a) 洗牌
print(a) 运行结果:打乱list的顺序
11、import random,string
a=random.sample(string.digits,3)#随机取n个数字
print(''.join(a))#转换成字符串
a=random.choice(string.ascii_uppercase)#随机取一个大写字母
print(a)
random,string
# print(random.randint(1,199))#从1到199中随机取一个整数
# print(random.choice(['a','d','f']))
# s=random.choice(['a','d','f'])
# print(s)
# print(string.digits)#0-9之间的所有数字
# print(string.ascii_lowercase)#所有小写
# print(string.ascii_uppercase)#所有大写
# print(string.ascii_letters)#所有小写+大写
# print(string.punctuation)#所有特殊字符
模块 hashilib
加密模块,不支持解密
1、md5加密
import hashlib
liyajing='adasdasd' 加密对象
a=hashlib.md5() 创建一个加密文件
a.update(liyajing.encode()) 进行加密,括号内容不可以是字符串,要传入bytes类型
print(a.hexdigest()) 输出加密后的结果
md5加密是不可逆的,存在简单加密后结果可以破解的情况,是因为撞库 ,数据库已存在这个数据
函数化
import hashlib
def a(st:str):#定义输入的内容只能是字符串
st_byte=st.encode() #将输入的字符串转换成二进制
a=hashlib.md5(st_byte) #将二进制内容写入到新建的md5文件中
res= a.hexdigest() #加密后的结果
return res
e=a('ass')
print(e)
2、.sha1 ,.sha224,sha512等,数值越大,加密后长度越长
a=hashilib.sha384('dasdas'.encode())
print(a.hexdigest())
base64模块
加密模块,支持解密
import base64
a='sasadas'
a_t=a.encode() #将字符串转换成二进制
r=base64.b64encode(a_t) #将二进制数据进行加密
print(r.decode()) #输出结果,将二进制数据转换成字符串
jiemi=base64.b64decode(r.decode()) #将字符串进行解密,同时转换成了二进制数据
print(jiemi.decode())# 输出结果,将二进制数据转换成字符串
os模块
import os
# print(os.getcwd()) # 取当前工作目录 绝对路径
#
# print(os.chdir(".."))# 更改当前目录
# print(os.getcwd())
#
# print(os.curdir) # 当前目录.相对路径
# print(os.pardir) # 父目录..
#
# print(os.mkdir("test1")) #在当前文件下创建文件夹
# print(os.mkdir("C://test1")) #在指定目录创建文件夹,创建文件
# print(os.rmdir("test1")) # 删除文件夹,空文件
# print(os.remove("f")) # 删除文件
# print(os.remove("../121301/day4/x")) # 删除文件
#
# print(os.listdir('.')) # 列出一个目录下的所有文件
# print(os.listdir('c://'))#列出c盘下的所有文件
#
# os.rename("test", "test1") # 重命名
# print(os.stat("kk.py")) # 获取文件信息
# print(__file__)
# print(os.path.abspath(__file__)) # 获取当前文件的绝对路径
# print(os.path.split("/usr/hehe/hehe.txt")) # 分割路径和文件名
# print(os.path.dirname("/usr/local")) # 获取父目录
# print(os.path.basename("/usr/hehe/hehe.txt")) # 获取最后一级,如果是文件显示文件名,如果是目录显示目录名
# print(os.path.exists("day9")) # 目录/文件是否存在
# print(os.path.isfile("kk.py")) # 判断是否是一个文件 可以写绝对路径
# print(os.path.isdir(r"E:\121301\day3\kk.py")) # 是否是一个路径 路径是否存在
# print(os.path.join("/root", 'hehe', 'a.sql')) # 拼接成一个路径
print(os.path.join(self.path, filename)) 拼接绝对路径
# # r 转换特殊字符
# os.set #显示操作系统的分隔符
# os.linesep #当前系统的换行符
# os.pathsep # 每个路径的分隔符,linux:,windows;
# print(os.environ) # 当前系统的环境变量
# print(os.name) #当前系统的名字
# os.system('ipconfig')#用来执行所有操作系统命令,不能获取到结果 返回值为0时 则表示执行成功,其他数字,则表示失败
#
# res=os.popen('ipconfig')#执行操作系统命令并且返回结果 用.read()命令,动态的不支持(如linux系统下top监控命令 数据变化无法获取)
# print(res.read())
sys模块
import sys
# print(sys.path)#查看环境变量
# print(sys.platform) #判断操作系统
# print(sys.version) #判断python版本
# quit('tuichu')#程序退出
# print(sys.exit('程序退出')) #程序退出
# print('hahah')
# print(sys.argv)#获取运行python文件的时候传入的参数,需要打开terminal执行
import sys
def clear_log(path):
print('已清理')
a=sys.argv 获取运行Python文件的参数,没有打开terminal之前没有上传参数,
# print(a)获取的是一个list【'c:\\120312\day5\changyy.py'】
if len(a)>1:
path=a[1]
clear_log(path)
else:
print('没参数')