一 time模块
时间表示形式
在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。(2)格式化的时间字符串(Format String): ‘1988-03-16’
(3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
自己的例子 import time# time.sleep(3)print(time.time()) #当前的时间戳1493197410.6175928# print(time.localtime()) #时间元组print(time.localtime(3600*24)) #东八区时间,北京时间,time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=2, tm_isdst=0)print(time.gmtime(3600*24)) #格林威治时间,time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=2, tm_isdst=0)print(time.localtime())#time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26, tm_hour=17, tm_min=3, tm_sec=30, tm_wday=2, tm_yday=116, tm_isdst=0)print(time.strftime("%Y-%m-%d %X",time.localtime())) #由当前的字符串时间转化成结构化时间2017-04-26 17:01:49print(time.asctime(time.localtime())) #Wed Apr 26 17:05:16 2017,结构化时间变成字符串时间,%a %b %d %H:%M %S %Y串print(time.asctime(time.localtime(149319740))) #Wed Sep 25 13:42:20 1974print(time.ctime(1493197400)) #把时间戳换成Wed Apr 26 17:03:20 2017这样的字符串时间print(time.time()+86400*3)print(time.mktime(time.localtime())) #结构化时间变成时间戳print(time.strptime("2017-04-26","%Y-%m-%d")) #字符串时间变成结构化时间
老师的例子:# <1> 时间戳>>> import time>>> time.time() #--------------返回当前时间的时间戳1493136727.099066# <2> 时间字符串>>> time.strftime("%Y-%m-%d %X")'2017-04-26 00:32:18'# <3> 时间元组>>> time.localtime()time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26, tm_hour=0, tm_min=32, tm_sec=42, tm_wday=2, tm_yday=116, tm_isdst=0)
小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
几种时间形式的转换
(1)
二 random模块
import random #---->生成随机数# print(random.random()) #大于0且小于1之间的小数,0.35071235628528896# print(random.randint(1,5)) #输出一个大于等于1且小于等于5之间的整数,运行一次,输出一次结果## print(random.randint(1,3)) #输出一个大于等于1且小于等于5之间的整数## print(random.choice([1,'23',[4,5]])) #随机输出1或'23'或[4,5]print(random.sample([1,'23',[4,5]],2)) #列表元素任意两个组合,[1, '23']或[[4, 5], '23']或[1, '23']等待。。。print(random.uniform(1,3)) #输出大于1小于3之间的小数,如1.6355247176726322这样的浮点型小数item = [1,3,5,7,9]random.shuffle(item)print(item) #打乱列表的次序,如[1, 3, 7, 9, 5]或[3, 5, 1, 9, 7]
import randomdef v_code(): code = '' for i in range(5): num = random.randint(0,9) #生成大于等于0小于等于9的整数 alf=chr(random.randint(65,90)) #生成大于等于65小于等于90的整数,并转化成ASCII码(字符串) add=random.choice([num,alf]) #生成列表[num,alf]任何一个随机数或者随机字符 code="".join([code,str(add)]) #用空字符串与add转化为字符串的文件相拼接 return code #返回值codeprint(v_code()) #调用函数并输出
三 hashlib
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。
什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。
摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(data)很容易,但通过digest反推data却非常困难。而且,对原始数据做一个bit的修改,都会导致计算出的摘要完全不同。
我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值:
import hashlib #导入hashlib模块md5=hashlib.md5()md5.update(b"how to use md5 in python hashlib?") #python3中必须在字符串前面加上b,代表bytes文件md5.update()print(md5.hexdigest()) #以16进制的形式返回摘要,32位
四 os模块
os模块是与操作系统交互的一个接口
import os# a=input(">>>")print(os.getcwd()) #查看当前路径# f=open("test.txt","w")# os.chdir(r"D:\Python\day33") #cdf=open("test2.txt","w")print(os.getcwd())os.makedirs("aaaaa/bbbbb") #创建文件夹后再创建文件os.removedirs("aaaaa/bbbbb") #移除文件夹(必须是空的)print(os.listdir(r"D:\Python\day33")) #列出 day33目录下的所有.py文件print(os.stat(r"D:\Python\day33\test.txt")) #os.stat_result(st_mode=33206, st_ino=1688849860726100, st_dev=865480, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1493203404, st_mtime=1493203473, st_ctime=1493203404)print(os.name) #nt,,,,,windowsNTprint(os.system("dir")) #查看dir目录下所有的文件print(os.path) #abs=os.path.abspath("test.txt")print(os.path.basename(abs)) #查看绝对路径下的test.txtprint(os.path.dirname(abs)) #查看test.txt是否在s1=r"C:\Users\Administrator\PycharmProjects"s2=r"py_fullstack_s4\day33"print(s1+os.sep+s2) #两个路径拼接ret=os.path.join(s1,s2) #两个路径拼接print(ret)
'''os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cdos.curdir 返回当前目录: ('.')os.pardir 获取当前目录的父目录字符串名:('..')os.makedirs('dirname1/dirname2') 可生成多层递归目录os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirnameos.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirnameos.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印os.remove() 删除一个文件os.rename("oldname","newname") 重命名文件/目录os.stat('path/filename') 获取文件/目录信息os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'os.system("bash command") 运行shell命令,直接显示os.environ 获取系统环境变量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不存在,返回Falseos.path.isabs(path) 如果path是绝对路径,返回Trueos.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回Falseos.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回Falseos.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间os.path.getsize(path) 返回path的大小'''
五 sys模块
sys.argv 命令行参数List,第一个元素是程序本身路径sys.exit(n) 退出程序,正常退出时exit(0)sys.version 获取Python解释程序的版本信息sys.maxint 最大的Int值sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值sys.platform 返回操作系统平台名称
import sys,timefor i in range(10): sys.stdout.write('#') time.sleep(0.3) sys.stdout.flush()