python基础之模块一
一 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:49 print(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 1974 print(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 random def 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 #返回值code print(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") #cd f=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,,,,,windowsNT print(os.system("dir")) #查看dir目录下所有的文件 print(os.path) #<module 'ntpath' from 'D:\\Program Files\\Python36\\lib\\ntpath.py'> abs=os.path.abspath("test.txt") print(os.path.basename(abs)) #查看绝对路径下的test.txt print(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下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下为"\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不存在,返回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.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
import sys,time for i in range(10): sys.stdout.write('#') time.sleep(0.3) sys.stdout.flush()
posted on 2017-04-26 20:36 bigdata_devops 阅读(305) 评论(0) 编辑 收藏 举报