python学习道路(day6note)(time &datetime,random,shutil,shelve,xml处理,configparser,hashlib,logging模块,re正则表达式)

1.tiim模块,因为方法较多我就写在code里面了,后面有注释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 print("time".center(60,"-"))
 5 print(time.asctime())   #返回字符串格式 外国的时间
 6 #Fri Nov 18 11:25:08 2016
 7 t = time.localtime()    #本地时间
 8 #print(t)  #这是一个对象所以需要
 9 print(t.tm_year,t.tm_yday)
10 #time.struct_time(tm_year=2016, tm_mon=11, tm_mday=18, tm_hour=11, tm_min=25, tm_sec=8, tm_wday=4, tm_yday=323, tm_isdst=0)
11 print(time.time())   #print(time.time()/(3600*24*365))   算年
12 #1479439871.1401508 时间戳
13 print(time.gmtime())   #utc 时间
14 t = time.localtime(time.time() + 3600*3)    #改变时间,针对秒做运算
15 print(t)
16 print(time.asctime(t)) #返回当前时间并且,需要的时间对象
17 print(time.ctime()) #返回当前时间,同上
18
19 #字符串转时间戳
20 print(time.strptime("2016-11-11 23:30","%Y-%m-%d %H:%M")) #转成时间对象了
21 t2 = time.strptime("2016-11-11 23:30","%Y-%m-%d %H:%M") #时间戳
22 print(time.mktime(t2))
23
24 #时间戳转字符串
25 t2_stamp = time.mktime(t2)  #时间戳
26 print(t2_stamp)
27 t3 = time.localtime(t2_stamp)  #时间对象
28 t3_str = time.strftime("%Y_%m_%d_%H_%M.log",t3)  #日志时间格式
29 print(t3_str)

2.datetiim模块,因为方法较多我就写在code里面了,后面有注释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 ###datetime
 5 #时间加减    可以对天 分钟 小时进行计算
 6 print("datetime".center(60,"-"))
 7 print(datetime.datetime.now())
 8 print(datetime.datetime.fromtimestamp(time.time()-3600))
 9 print(datetime.datetime.now() - datetime.timedelta(days=3)) #day hours mintes 前面的 + -控制加减
10
11 now = datetime.datetime.now() #可以直接替换时间
12 print(now.replace(month=1,day=3,hour=3))

3.random模块,因为方法较多我就写在code里面了,后面有注释

#!/usr/bin/env python
#_*_coding:utf-8_*_

print("random".center(60,"-")) #随机数模块
import random
print(random.random()) #随机打印一个小数
print(random.randint(1,2))#包含
print(random.randrange(1,10))#不包含后面值
print(random.sample(range(100),5)) #随机数密码
print(random.sample(‘abcde‘,2))

import string
str_sourc = string.ascii_letters + string.digits
print(‘‘.join(random.sample(str_sourc,6)))  #join好像是可以把列表拆开成字符串
##随机数脚本
import random
checkcode = ‘‘
for i in range(4):
    current = random.randrange(0,4)
    if current != i:
        temp = chr(random.randint(65,90))  #65-90 就是ansi码对应的A-Z的大写
    else:
        temp = random.randint(0,9)
    checkcode += str(temp)
print(checkcode)  #生成四位的随机数

3.shutil模块,因为方法较多我就写在code里面了,后面有注释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 #高级的文件,文件夹,压缩包,处理模块
 5 import shutil
 6 #f1 = open("file_old.txt")
 7 #f2 = open("file.new.txt",‘w‘)
 8 #shutil.copyfileobj(f1, f2)#因为是对象,所以你要先打开文件
 9 #os.path.basename("/var/www/data1") 文件名最后显示data1
10 #os.path.join("/usr/local/data1")
11 #shutil.copy(r"c:笔记","test") #会拷贝到当前目录 上面2条是解释相当于  不需要打开文件
12 #copy 与 copyfile的区别在于,copy是会把权限copy过来
13 #shutil.copyfile(r"c:笔记","test")
14 #shutil.copy2()  #拷贝文件和状态
15 #shutil.copytree(r"c:笔记","新笔记") #cp -rf拷贝目录过来
16 #shutil.rmtree()秭归删除
17 #shutil.move()移动
18
19 # shutil.make_archive(base_name, format, ...)
20 # 创建压缩包并返回文件路径,例如:zip、tar
21 # base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
22 # 如:www = > 保存至当前路径
23 # 如: / Users / wupeiqi / www = > 保存至 / Users / wupeiqi /
24 # format:    压缩包种类,“zip”, “tar”, “bztar”,“gztar”
25 # root_dir:    要压缩的文件夹路径(默认当前目录)
26 # owner:    用户,默认当前用户
27 # group:    组,默认当前组
28 # logger:    用于记录日志,通常是logging.Logger对象
29 #shutil.make_archive(r"c:笔记",format="zip",root_dir=r"c:新笔记")

4.shelve模块,因为方法较多我就写在code里面了,后面有注释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 print("shelve".center(60,"-")) #是一个简单的k,v将内存数据通过文件持久化的模块,可以持久任何pickle
 5 #可支持的Python数据格式
 6 # import shelve
 7 # d = shelve.open(‘shelve_test‘)  # 打开一个文件
 8 # def stu_data(name,age):
 9 #     print("register stu",name,age)
10 # name = ["alex", "rain", "test"]
11 # d["test"] = name  # 持久化列表
12 # d[‘func‘] = stu_data #内存地址    相当于 2个类型存储  然后用下面的来读取下来
13 # d.close()
14 # #执行过后会出现三个文件
15 #
16 # #应该新打开一个文件来load
17 # import shelve
18 # def stu_data(name,age):#加上就不会报错
19 #     print("register stu",name,age)  #加上就不会报错
20 # f = shelve.open("shelve_test")
21 # print(f["test"])  #打印出来的是 三个名字
22 # print(f["func"]("test,30"))  #会打印不出来,因为func是内存地址,dump的话找对象找不到

5.xml处理模块,因为方法较多我就写在code里面了,后面有注释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 print("xml".center(60,"-"))
 5 # import xml.etree.ElementTree as ET
 6 # tree = ET.parse("test.xml")
 7 # root = tree.getroot() #根节点 data
 8 # print(root.tag)
 9 # # 遍历xml文档
10 # for child in root:
11 #     print(child.tag, child.attrib)
12 #     for i in child:
13 #         print(i.tag, i.text)
14 # # # 只遍历year 节点
15 # for node in root.iter(‘year‘):
16 #     print(node.tag, node.text)

5.hashlibl处理模块,因为方法较多我就写在code里面了,后面有注释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 print("hashlib".center(60,"-"))   #一种跟md5相同的效验工具
 5 import hashlib
 6 m = hashlib.md5()
 7 m.update(b"alex")
 8 print(m.hexdigest())    #md5值
 9 m.update(b"li")
10 print(m.hexdigest())
11 m2 = hashlib.md5()
12 m2.update(b"alexli")
13 print(m2.hexdigest())  #md5竟然是相同的
14
15 m3 = hashlib.sha256()  #一般比较安全就256
16 m3.update(b"alexli")
17 print(m3.hexdigest())
18
19 import hmac
20 h = hmac.new(b‘salt‘,b‘hello‘)
21 print(h.hexdigest())  #这个更安全,一般用于网络上的消息加密传输

6.loggingl处理模块,因为方法较多我就写在code里面了,后面有注释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 print("logging".center(60,"-"))
 5 import logging
 6
 7 logging.debug("test debug")
 8 logging.info("test info")
 9 logging.warning("this wron plees zhuyi")
10 logging.error("test error")
11 logging.critical("server is down")  #默认warining 以下不打印
12
13 import logging
14 logging.basicConfig(filename=‘example.log‘,level=logging.DEBUG) #打印到文件里面   报警的文件需要放在这下面才能生成
15 logging.basicConfig(filename=‘example.log‘,level=logging.DEBUG,format=‘%(asctime)s %(message)s‘,datefmt=‘%m/%d/%Y %I:%M:%S %p‘)#加入了时间
16 #format()参数里面可以加入级别各种日志格式  可以加一些分隔符 :-等

7.re正则,因为方法较多我就写在code里面了,后面有注释

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3
 4 a = re.match("inet","inet address:10.10.10.10 netmask:20.20.20.20")  #前面引号是规则  match是从头开始匹配
 5 print(a)  #
 6 print(a.group())#规则是4个所以显示就是四个
 7 #规则地方写入"\w+"  \w匹配一个字符[a-zA-Z0-9]  \w+匹配多个
 8 #‘.‘ 匹配除了\n外的任意一个字符,包括特殊字符
 9 #‘+‘ 匹配前一个字符一个或者多个
10 #‘^‘ 匹配字符开头 但是match就是匹配开头,所以没啥意义
11 #‘*‘ 匹配*号前的字符0次或多次   言外之意就是可以匹配不到  会返回空
12 #‘?‘ 匹配字符一次或者0次 不能多
13 #‘{m}‘ 匹配前一个字符m次  "\w{3}"
14 #‘{n,m}‘ 匹配前一个字符多少到多少次  "\w{5,8}"
15 #‘|‘ 匹配左边或右边的字符  "inet|INET"
16 #(...) 分组匹配
17 # print(re.search("(\d){2}(\d){2}(\d){2}","123456789 name:alex").group()) #这是匹配出来的结果 123456
18 # print(re.search("(\d){2}(\d){2}(\d){2}","123456789 name:alex").groups()) #2 4 6
19 # print(re.search("(\d\d)(\d\d)(\d\d)","123456789 name:alex").groups()) #12 34 56
20 # print(re.search("(\d{2})(\d{2})(\d{2})","123456789 name:alex").groups())
21 #‘\A‘ 只从字符开头匹配
22 #‘\z‘ 以数字结尾 同$
23 #‘\d‘ 匹配0-9
24 #‘\D‘ 匹配非数字
25 #‘\w‘ 匹配[a-zA-Z0-9]
26 #‘\W‘ 匹配非[a-zA-Z0-9]  就是特殊字符
27 #‘s‘ 匹配空白字符 ,\t \n \r
28 #‘(?P<name>...)‘ #分组匹配
29 print(re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict())
30 #groupdic() 字典形式  groups()列表
31 print(re.search("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","inet address:10.10.10.10 netmask:20.20.20.20"))
32 print(re.search("(\d{1,3}\.){3}\d{1,3}","inet address:10.10.10.10 netmask:20.20.20.20"))
33 print(re.findall("\d+","a555b3c5d6s"))  #search 是匹配到了第一个就开始返回了,而findall是匹配所有了
34 print(re.findall("[a-z]","a555b3c5d6s"))
35
36
37 print(re.split("\d+","a555b3c5d6s6"))    #split也是数字作为分隔符,但是侯后面会多出一个元素
38 print(re.sub("\d+","|","a555b3c5d6s6"))  #匹配字符替换  以什么为分隔符给替换
39 print(re.sub("\d+","|","a555b3c5d6s6",count=2))
40
41 #反斜杠的困扰  比如目录格式
42 print(re.split("\\\\",r"c:\users\data\python35"))  #加r就是字符串对待  这是以\为分隔符
43 print(re.search("a","ABC",flags=re.I))   #re.I 忽律大小写
44 print(re.search("^a","\nabc\neee",flags=re.M))  #re.M 匹配多行要不\n就换行
45 print(re.search(".+","\nabc\neee",flags=re.S))  #多行都匹配出来而且\n也匹配出来

8.configparser正则,因为方法较多我就写在code里面了,后面有注释

时间: 2024-10-28 05:46:12

python学习道路(day6note)(time &datetime,random,shutil,shelve,xml处理,configparser,hashlib,logging模块,re正则表达式)的相关文章

8.模块介绍 time &amp;datetime模块 random os sys shutil json &amp; picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p

python模块(shelve,xml,configparser,hashlib,logging)

1.1shelve模块 shelve 模块比pickle模块简单,只有一个open函数,返回类似字典对象,可读可写:key必须为字符串, 而值可以是python所支持的数据类型. shelve模块主要用来存储一个简单的数据, shelve最重要的函数是open,在调用它的时候,使用文件名作为参数,它会返回一个架子(shelf)对象,可以用它来存储类容. 1 f = shelve.open(r"shelve_test.txt") 2 # aa = {"stu1":{&

python学习道路(day12note)(mysql操作,python链接mysql,redis)

1,针对mysql操作 1 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 设置密码 2 update user set password=passworD("test") where user='root';修改密码 3 flush privileges; 4 grant all on *.* to [email protected]'%' identified by 'your_password'; 5 mysq

python学习道路(day11note)(协程,同步与异步的性能区别,url爬网页,select,RabbitMq)

1.协程 1 #协程 又称微线程 是一种用户的轻量级线程 程序级别代码控制 就不用加机器 2 #不同函数 = 不同任务 A函数切到B函数没有进行cpu级别的切换,而是程序级别的切换就是协程 yelied 3 4 #单线程下多个任务流用协程,比如打电话可以切换,nginx 5 #爽妹给你打电话的时候,她不说话,刘征电话过来时候你可以切过去,这时候要是爽妹说话,就会bibi响 6 ''' 7 8 协程的好处: 9 无需线程上下文切换的开销 10 无需原子操作锁定及同步的开销 11 "原子操作(ato

python学习道路(day7note)(subprocess模块,面向对象)

1.subprocess模块   因为方法较多我就写在code里面了,后面有注释 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 #linux 上调用python脚本 5 #os.system输出命令结果到屏幕,返回命令执行状态 6 #os.popen("dir") 返回内存对象,需要单独去取一下 7 #os.popen("dir").read() 保存命令的执行结果输出,但是不返回执行状态 8 # 9 10 #p

python学习道路(day8note)(抽象类,类的方法,异常处理,socket编程)

1.#面向对象 #抽象接口 === 抽象类 #就是架构师给你一个架子,你们去写,如果满足不了直接报错 1 #python2 2 print("python2---抽象类".center(20,'#')) 3 import abc #需要在python2中测试,如果直接运行会报错 4 #因为没有调用send方法 5 class Alert(object): 6 '''报警基类''' 7 __metaclass__ = abc.ABCMeta 8 @abc.abstractmethod 9

python学习道路(day9note)(socketserver编程,ftp)

1.ftp client 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 5 import socket 6 import subprocess 7 8 user_data = { 9 'user':None, 10 } 11 12 user_status = False #用户验证,只是当用户可以链接的时候需要去验证一下用户密码 13 def login(): 14 count = 0 15 global user_status 16 whi

PYTHON学习0044:函数---datetime模块详解--2019-8-11

1.datetime.datetime.now():返回当前的datetime的日期类型:2.datetime.date.fromtimestamp():吧一个时间戳转为datetime日期类型:3.时间运算:datetime.datetime.now()+datetime.timedelta(4):datetime.timedelta()括号里默认单位为"天"4.时间替换:用replace函数: 原文地址:https://blog.51cto.com/13543767/2428482

python学习道路(day5note)(列表生成式,生成器,装饰器,常用模块)

生成列表的方式 data = [1,2,3]  需求   每个数字加上1 # data = ( x*2 for x in range(5)) print(data) 列表生成式 后面的I赋予加1操作,i+q只能放在前面 加上三元运算可以 生成器 (惰性运算,算到哪个值就到哪个值,往后就不算了)就是一个推到行算法 中括号叫做列表生成式,小括号叫做生成器 从左到右执行  当我访问到后面的数时候,前面的就没了 这样也是可以取值的,从左到右 斐波拉契数列 ### ### 转为生成器 加了yield 叫做