一、时间模块
和时间有关系就用时间模块
time.sleep #推迟时间的运行,单位为秒 time.time #获取当前的戳
表示时间的三种方式:时间戳、元组(struct_time)、格式化的时间字符串
(1)时间戳:表示的就是从1970年1月1日00:00:00开始按秒计算的
(2)格式化的时间字符串:“1990-12-6”
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(0000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身
(3)元组:元组共有9个元素共九个元素
索引(Index) | 属性(Attribute) | 值(Values) |
---|---|---|
0 | tm_year(年) | 比如2011 |
1 | tm_mon(月) | 1 - 12 |
2 | tm_mday(日) | 1 - 31 |
3 | tm_hour(时) | 0 - 23 |
4 | tm_min(分) | 0 - 59 |
5 | tm_sec(秒) | 0 - 61 |
6 | tm_wday(weekday) | 0 - 6(0表示周日) |
7 | tm_yday(一年中的第几天) | 1 - 366 |
8 | tm_isdst(是否是夏令时) | 默认为-1 |
#导入时间模块 import time #时间戳 print(time.time()) #时间字符串 print(time.strftime('%Y-%m-%d %X')) print(time.strftime('%Y-%m-%d %H:%M:%S')) #时间元组 print(time.localtime())
几种格式的转换:
#时间戳-->结构化时间 print(time.gmtime(1500000000)) #输出的结果:time.struct_time(tm_year=2017, tm_mon=7, #tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, #tm_yday=195, tm_isdst=0) print(time.localtime(1502178365)) #time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=15, tm_min=46, tm_sec=5, tm_wday=1, tm_yday=220, tm_isdst=0) #结构化时间-->时间戳 time_tuple = time.localtime(1502178365) print(time.mktime(time_tuple))
结构化时间-->字符串时间 print(time.strftime("%Y-%m-%d %X")) #输出结果为:2017-08-08 15:53:29 print(time.strftime("%Y-%m-%d",time.localtime(1502178365))) #输出结果为:2017-08-08 print(time.strptime("2017-08-08","%Y-%m-%d")) #输出的结果为:time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=220, tm_isdst=-1) print(time.strptime("08/08/2017","%m/%d/%Y")) #输出的结果为:time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=220, tm_isdst=-1)
#结构化时间 --> %a %b %d %H:%M:%S %Y串 #time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串 print(time.asctime(time.localtime(1502178365))) #输出的结果为:Tue Aug 8 15:46:05 2017 #%a %d %d %H:%M:%S %Y串 --> 结构化时间 #time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串 print(time.ctime()) #输出的结果为:Tue Aug 8 16:01:53 2017 print(time.ctime(1502178365)) # 输出的结果为:Tue Aug 8 15:46:05 2017
二、random模块
import random #随机小数 print(random.random()) # 大于0且小于1之间的小数 #输出的结果:0.9325737444675269 print(random.uniform(1,4)) #大于1小于4的小数 #输出的结果:2.139265140456544 # 随机整数 print(random.randint(1,10)) # 大于等于1且小于等于10之间的整数 #输出的结果:3 print(random.randrange(1,9,2)) # 大于等于1且小于9之间的整数 #输出的结果:5 #随机选择一个返回 print(random.choice([1,'23',3,[456]])) # 1或者23或者[456]或3 #输出的结果:[456] #随机选择多个返回,返回的个数为函数的第二个参数 print(random.sample([1,'23',[4,5]],2)) #列表元素任意2个组合 #输出的结果:[[4, 5], '23'] # 打乱列表顺序 k=[1,3,5,7,9,] random.shuffle(k) #打乱顺序 print(k)
import random num_list=list(range(10)) new_num_l=list(map(str,num_list)) alpha_l=[] for i in range(65,91): alpha=chr(i) alpha_l.append(alpha) new_num_l.extend(alpha_l) ret_l=[] for i in range(4): ret_l.append(random.choice(new_num_l)) print(''.join(ret_l))
from random import choice,randint l[choice((chr(randint(65,90)),chr(randint(97,122)),str(randint(0,9)))) for i in range(4)] print(''.join(l))
三、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.path
os.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的大小
四、sys模块
sys模块是与python解释器交互的一个接口
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
五、序列化模块
将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。
1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性。
json
Json模块提供了四个功能:dumps、dump、loads、load
import json dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串 print(type(str_dic),str_dic) #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"} #注意,json转换完的字符串类型的字典 中的字符串是由""表示的 dic2 = json.loads(str_dic) #反序列化:将一个字符串格式的字典转换成 一个字典 #注意,要用json的loads功能处理的字符串 类型的字典中的字符串必须由""表示 print(type(dic2),dic2) #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'} list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}] str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型 print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3,{"k1": "v1", "k2": "v2"}] list_dic2 = json.loads(str_dic) print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]
import json f = open('json_file','w') dic = {'k1':'v1','k2':'v2','k3':'v3'} json.dump(dic,f) #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件 f.close() f = open('json_file') dic2 = json.load(f) #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回 f.close() print(type(dic2),dic2)
json & pickle 模块
用于序列化的两个模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化)
import pickle dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = pickle.dumps(dic) print(str_dic) #一串二进制内容 dic2 = pickle.loads(str_dic) print(dic2) #字典 import time struct_time = time.localtime(1000000000) print(struct_time) f = open('pickle_file','wb') pickle.dump(struct_time,f) f.close() f = open('pickle_file','rb') struct_time2 = pickle.load(f) print(struct_time.tm_year)