time模块
random模块
sys模块
os模块
序列化模块
time模块
有三种方式表示
在Python中,通常有三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:
(1)时间戳 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
(2)格式化时间字符串:
(3)元组 struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
小结:时间戳是计算机用来计算的;格式化字符串是方便人们看的;元组是用来操作时间的。
# import time # d=time.time()#时间戳 # print(d) # print(time.localtime(d))#本地时间以元组的形式 # print(time.gmtime(d))#伦敦时间以元组的形式 # c=time.localtime(d)#以元组的形式来展示本地时间 # h=time.mktime(c)#将元组的形式变成时间戳的形式 # print(h)#打印出来 # h1=time.strftime('%Y-%m-%d %X',c)#将元组的形式变成格式化 # print(h1) # h3=time.strptime(h1,'%Y-%m-%d %X')#将格式化变成元组 # print(h3)
import time
# ss=time.localtime()#元组
# d=time.asctime(ss)
# print(d)
# ss=time.time()#时间戳
# d=time.ctime(ss)
# print(d)
random模块
import random #随机小数 # s=random.random()#生成0-1之间的随机数 # print(s) # s1=random.uniform(1,3)#生成1-3之间的随机数 # print(s1) # #随机整数 # s=random.randint(1,5)#包括首尾之间的随机整数 # print(s) # s=random.randrange(1,10,2)#大于等于1且小于10之间的整数 # print(s) # s=random.choice(['1','hehe','dddd'])#随机选择一个返回 # print(s) # s=random.sample(['dddd','hssihso','jjdjdjjd',['ddd','rrr']],2)#返回2个 # print(s) # item=[1,3,4,5,6] # random.shuffle(item)#d打乱顺序 # print(item)
生成随机验证码:(两种方法)
num_list=list(range(10)) new_num_l=list(map(str,num_list)) alph_l=[] for i in range (65,91): alph=chr(i) alph_l.append(alph) new_num_l.extend(alph_l) ret_l=[] for i in range(4): ret_l.append(random.choice(new_num_l)) print(''.join(ret_l)) import random def v_code(): code = '' for i in range(5): num=random.randint(0,9) alf=chr(random.randint(65,90)) add=random.choice([num,alf]) code="".join([code,str(add)]) return code print(v_code())
sys模块
sys模块是与python解释器交互的一个接口。
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称
import sys print(sys.argv)#返回所在的路径 print(sys.version)#返回python的版本 print(sys.maxsize)#返回最大的int值 print(sys.path)#返回模块的搜索路径,即环境变量 print(sys.platform)#返回操作系统的平台名字
os模块
os模块是与操作系统交互的一个接口
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 os.stat('path/filename') 获取文件/目录信息 os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为" ",Linux下为" " os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' os.system("bash command") 运行shell命令,直接显示 os.popen("bash command) 运行shell命令,获取执行结果 os.environ 获取系统环境变量 os.pathos.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。 即os.path.split(path)的第二个元素 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小
序列化模块
什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。
序列化的目的
1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性。
Json模块提供了四个功能:dumps、dump、loads、load
# import json # dic1={'k1':'v1','k2':'v2','k3':'v3'} # print(type(dic1))#打印出字典的类型 # str_dic=json.dumps(dic1)#序列化:将一个字典转换成字符串 # print(str_dic,type(str_dic)) # dic_dic=json.loads(str_dic)#反序列化:将一个字符串转换成字典 # print(dic_dic,type(dic_dic)) # import json # f=open('filename','w') # dic1={'k1':'v1','k2':'v2','k3':'v3'} # json.dump(dic1,f)#获得句柄,讲字典以字符串的形式写入 # f.close()
# f=open('filename')
# dic2=json.load(f)#直接将json的字符串形式变成数据结构返回
# f.close()
# print(type(dic2),dic2)
pickle模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
-
pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)
# import pickle # k={'k1':'v1','k2':'v2','k3':'v3'} # d=pickle.dumps(k)#转成二进制的数据 # print(pickle.loads(d))#返回原来的数据结构
这里我们要说明一下,json是一种所有的语言都可以识别的数据结构。
如果我们将一个字典或者序列化成了一个json存在文件里,那么java代码或者js代码也可以拿来用。
但是如果我们用pickle进行序列化,其他语言就不能读懂这是什么了~如果是用python来读写就用pickle模块
shelve 模块
# import shelve # f=shelve.open('shelve_file') # f['key']={'k1':'v1','int':10} # f.close() # d=f['key'] # f.close() # print(d) # import shelve # f=shelve.open('shelve_file',flag='r') # print(f['key']) # f.close() # f['key']['new values']='this is not before ' # f.close()
但是这个读写是在缓存中的不是在文件的,需要更改默认值
# f2=shelve.open('shelve_file',writeback=True) # print(f2['key']) # f2['key']['new values']='this is not before' # f2.close()