
时间模块time()与datetime()time()模块中的重要函数time()模块时间格式转换time()模块时间转换1.时间戳1970年1月1日之后的秒,即:()2.格式化的字符串2014-11......
time()模块中的重要函数

time()模块时间格式转换

time()模块时间转换
1.时间戳1970年1月1日之后的秒,即:()
2.格式化的字符串2014-11-1111:11,即:(’%Y-%m-%d’)
3.结构化时间元组包含了:年、日、星期等…_time即:()
importtimeprint(())格式化的字符串:2017-11-20print(())将时间转换成utc格式的元组格式:(tm_year=2017,tm_mon=11)2.将格字符串时间转换成结构化时间元组:(tm_year=2017,tm_mon=11)print(('2014-11-11','%Y-%m-%d'))默认当前时间5.将时间戳转成英文字符串时间:MonNov2016:51:282017print((()))ctime和asctime区别
1)ctime传入的是以秒计时的时间戳转换成格式化时间
2)asctime传入的是时间元组转换成格式化时间
importtimet1=()print(t1)WedJan410:08:482017t2=()print(t2)WedJan410:08:482017
datetime获取时间
importdatetime2、获取三天后的时间print(()+(+3))4、获取三个小时后的时间print(()+(hours=3))2017-08-1811:25:52.618873print(().date())2017-08-1811-25-52
datetime时间转换
().strftime("%Y-%m-%d%H:%M:%S")'2018-03-0910:08:50'2、datetime对象转时间元组3、时间戳转换成datetime对象本地时间与utc时间相互转换importtimeimportdatetimedefutc2local(utc_st):'''作用:将UTC时间装换成本地时间:paramutc_st:传入的是utc时间(datatime对象):return:返回的是本地时间datetime对象'''now_stamp=()local_time=(now_stamp)utc_time=(now_stamp)offset=local_time-utc_timelocal_st=utc_st+offsetreturnlocal_stdeflocal2utc(local_st):'''作用:将本地时间转换成UTC时间:paramlocal_st:传入的是本地时间(datatime对象):return:返回的是utc时间datetime对象'''time_struct=(local_())utc_st=(time_struct)returnutc_stutc_time=(())比北京时间晚了8个小时local_time=()北京本地时间utc_to_local=utc2local(utc_time)local_to_utc=local2utc(local_time)printutc_to_local2018-05-0606:02:30转换成北京当地时间django的timezone时间与本地时间转换
1、utc时间装换成本地时间utc_to_local=(())第一个日期d2=(2019,2,2)两日期差距print()⒈随机整数:print((0,99))随机选取0-101之间的偶数0.972654134347print((1,10))⒊随机字符:print(('abcdefg'))['j','f','c']使用random实现四位验证码
使用for循环实现
65,90表示所有大写字母else:tmp=(0,9)checkcode+=str(tmp)print(checkcode)['i','Q','U','u','A','0','9']print(str_list)str_final=''.join(str_list)运行结果:jkFU2Edos模块
os模块常用方法
importosC:\Users\admin\PycharmProjects\s14\Day5\test4C:\Users\admin\PycharmProjects\s14('.')('..')可以发现在C盘创建了文件夹/aaa/bbb删除所有空目录仅能创建单个目录仅删除指定的一个空目录10删除一个文件(r'C:\bbb\')11重命名文件/目录(r'C:\bbb\',r'C:\bbb\')13输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"print()14输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"print();(分号)nt18获取系统环境变量print()19返回path规范化的绝对路径print((r'C:/bbb/'))20将path分割成目录和文件名二元组返回print((r'C:/bbb/ccc'))21返回path的目录。其实就是(path)的第一个元素print((r'C:/bbb/ccc'))22返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即(path)的第二个元素print((r'C:/bbb/ccc/ddd'))23如果path存在,返回True;如果path不存在,返回Falseprint((r'C:/bbb/ccc/'))24如果path是绝对路径,返回True25如果path是一个存在的文件,返回True。否则返回Falseprint((r'C:/bbb/ccc/'))26如果path是一个存在的目录,则返回True。否则返回Falseprint((r'C:/bbb/ccc'))28返回path所指向的文件或者目录的最后存取时间print((r'C:/bbb/ccc/'))29返回path所指向的文件或者目录的最后修改时间print((r'C:/bbb/ccc/'))30无论linux还是windows,拼接出文件路径put_filename='%s%s%s'%(,,filename)exist_ok=True:如果存在当前文件夹不报错path=('C:/aaa/bbb/ccc','ddd',)f_path=(path,'')withopen(f_path,'w',encoding='utf8')asf:('areyouok!!')将其他目录的绝对路径动态的添加到pyhton的环境变量中
importos,sysprint((((__file__))))BASE_DIR=(((__file__)))(BASE_DIR)要想导入其他目录中的函数,其实就是将其他目录的绝对路径动态的添加到pyhton的环境变量中,这样python解释器就能够在运行时找到导入的模块而不报错:!/usr/bin/envpython{'name':'aaa'}sys模块
1、sys基本方法
返回执行脚本传入的参数
(n)退出程序,正常退出时exit(0)
获取Python解释程序的版本信息
最大的Int值
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
返回操作系统平台名称
(‘please:’)
val=()[:-1]
2、使用sys返回运行脚本参数importsys打印所有参数['','1','2','3']print([1:])将文件夹Day1和Day2归档成并且在归档文件夹中Day1和Day2分别变成和的压缩文件tar=('','w')(r'C:\Users\admin\PycharmProjects\s14\Day1',arcname='')(r'C:\Users\admin\PycharmProjects\s14\Day2',arcname='')()可设置解压地址()shutil创建压缩包,复制,移动文件注:shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的作用:shutil创建压缩包并返回文件路径(如:zip、tar),并且可以复制文件,移动文件
shutil使用
importshutil2copyfile()直接指定文件名就可进行复制("",'')4(src,dst)拷贝状态的信息,包括:modebits,atime,mtime,('','')6递归的去删除目录中的所有目录和文件,这里的test_dir是一个文件夹,包含多级文件夹和文件("test_dir")8_archive(base_name,format,)创建压缩包并返回文件路径,例如:zip、tar'''1.base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,如:www=保存至当前路径如:/Users/wupeiqi/www=保存至/Users/wupeiqi/2.format:压缩包种类,“zip”,“tar”,“bztar”,“gztar”3.root_dir:要压缩的文件夹路径(默认当前目录)4.owner:用户,默认当前用户5.group:组,默认当前组6.logger:用于记录日志,通常是对象'''将文件和压缩成的压缩文件z=('','w')('')("")()1首先使用shelve将.py中定义的字典列表等读取到指定文件shelve_test中,其实我们可不必关心在文件中是怎样存储的d=('shelve_test')持久化列表d["info"]=infod["date"]=()()打开一个文件print(("name")){'job':'it','age':22}print(("date"))json序列化代码importjsoninfo={'name':"tom","age":"100"}f=open("",'w')json反序列化代码importjsonf=open("","r")data=(())()print(data["age"])2、pickle序列化
1.python的pickle模块实现了python的所有数据序列和反序列化。基本上功能使用和JSON模块没有太大区别,方法也同样是dumps/dump和loads/load
2.与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。
pickle序列化
pickle反序列化代码importpicklef=open("","rb")data=(())()print(data["age"])3、解决JSON不可以序列化datetime类型解决json无法序列化时间格式
importjson,datetimeclassJsonCustomEncoder():defdefault(self,field):ifisinstance(field,):('%Y-%m-%d%H:%M:%S')elifisinstance(field,):('%Y-%m-%d')else:(self,field)t=()print(type(t),t)f=open('ttt','w')使用时候只要在增加个cls参数即可4、JSON和pickle模块的区别
1.JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。
2.JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异
hashlib模块
1、用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法
五种简单加密方式
importhashlib目的:实现对b"HelloIt'sme"这句话进行md5加密m=()2)使用m对b"Hello"加密(b"It'sme")4)最终加密结果就是对b"HelloIt'sme"加密的md5值:5ddeb47b2f925ad0bf249c52e342728a3sha256hash=()(b'admin')print(())5sha512hash=()(b'admin')print(())
2、以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
hmac添加自定义key加密
注:hmac是一种双重加密方法,前面是加密的内容,后面才是真实要传的数据信息
subprocess模块
1、subprocess原理以及常用的封装函数
1.运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序
2.在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。
3.subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用
4.另外subprocess还提供了一些管理标准流(standardstream)和管道(pipe)的工具,从而在进程间使用文本通信。
subprocess常用函数
2、返回执行状态:0执行成功,否则抛异常_call(["ls","-l"])4、返回结果为字符串类型ret=('ls-a')ret'.\n..\'1、先打印'parentprocess'不等待child的完成importsubprocesschild=(['ping','-c','4',''])print('parentprocess')检查子进程状态()向子进程发送信号
()下面执行命令等价于:cat/etc/passwd|greprootchild1=(["cat","/etc/passwd"],stdout=)child2=(["grep","root"],stdin=,stdout=)out=()执行结果:(b'root:x:0:0:root:/root:/bin/bash\noperator:x:11:0:operator:/root:/sbin/nologin\n',None)
获取ping命令执行结果
importsubprocesslist_tmp=[]defmain():p=(['ping','','-c5'],stdin=,stdout=)(p)==None:r=().strip().decode('utf-8')ifr:39;匹配字符结尾,或("foo39;)ret=(mobile_re,'')print(ret)(b)无论有多少个匹配的只会匹配一个c=('bai','')print(c)bai⒊split(pattern,string[,maxsplit=0])
作用:将字符串以指定分割方式,格式化成列表
importretext='aa1bb['aa','1bb','2cc3ddd']print(('\W',text))['aa','bb',text))+',text))['1','2','3','4']print(('o','one1two2three3four4'))rld!'))Hi,-nice-to-meet-you-where-are-you-from?print((r'\s','-',test,5))Hi,nicet**meety**uwherearey**ufr**m?⒍escape(string)
1)(pattern)可以对字符串中所有可能被解释为正则运算符的字符进行转义的应用函数。
2)如果字符串很长且包含很多特殊技字符,而你又不想输入一大堆反斜杠,或者字符串来自于用户(比如通过raw_input函数获取输入的内容),
且要用作正则表达式的一部分的时候,可以用这个函数
importreprint((''))3、re模块中的匹配对象和组group()1)group方法返回模式中与给定组匹配的字符串,如果没有给定匹配组号,默认为组0
2)()==(0)==所有匹配的字符
group(0)与group(1)区别比较
importrea="123abc321efg456"print(("([0-9]*)([a-z]*)([0-9]*)",a).group(0))('123','abc','321')print(("([0-9]*)([a-z]*)([0-9]*)",a).group(1))abcprint(("([0-9]*)([a-z]*)([0-9]*)",a).group(3))123456789print((1))67print((3))baiduprint((1))9print((1))print(('(\w.*\d)\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+YES\s+NVRAM\s+(\w+)\s+(\w+)\s*',test).groups())ret=(r'(\w*\/\d+).*\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*(\s+up\s+)',test).groups()print(ret)1.(\w*\d+\/\d+)匹配结果为:GigabitEthernet0/31.2/\d+:匹配所有斜杠开头后根数字(比如:/3)3.\s+up\s+匹配结果为:up这个单词,前后都为空格4、re模块其他知识点re匹配忽略大小写,匹配换行
importreabcdprint(("[a-z]+","abcdA",flags=).group())连同换行符一起匹配:aaaprint((r".+","\naaa\nbbb\nccc",flags=))39;,expression_l[-1])a.匹配expression_l列表最后一个元素是+,-,*,/,(这五个符号就是负数3)new_l=[('([\+\-\*\/\(\)])',exp)ifi]a.将字符串按照+,-,*,/,(,)切分成列表(不是正真的负数就切分)4)print(('([\+\-])','-1+2-3*(2*2+3)'))#按照加号或者减号分割成列表运行结果:['','-','1','+','2','-','3*(2*2','+','3)']注:文章转载自互联网