python学习道路(day6note)(time &datetime,random,shutil,shelve,xml处理,configparser,hashlib,logging模块,re正则表达式)
1.tiim模块,因为方法较多我就写在code里面了,后面有注释
#!/usr/bin/env python
#_*_coding:utf-8_*_
print("time".center(60,"-"))
print(time.asctime()) #返回字符串格式 外国的时间
#Fri Nov 18 11:25:08 2016
t = time.localtime() #本地时间
#print(t) #这是一个对象所以需要
print(t.tm_year,t.tm_yday)
#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)
print(time.time()) #print(time.time()/(3600*24*365)) 算年
#1479439871.1401508 时间戳
print(time.gmtime()) #utc 时间
t = time.localtime(time.time() + 3600*3) #改变时间,针对秒做运算
print(t)
print(time.asctime(t)) #返回当前时间并且,需要的时间对象
print(time.ctime()) #返回当前时间,同上
#字符串转时间戳
print(time.strptime("2016-11-11 23:30","%Y-%m-%d %H:%M")) #转成时间对象了
t2 = time.strptime("2016-11-11 23:30","%Y-%m-%d %H:%M") #时间戳
print(time.mktime(t2))
#时间戳转字符串
t2_stamp = time.mktime(t2) #时间戳
print(t2_stamp)
t3 = time.localtime(t2_stamp) #时间对象
t3_str = time.strftime("%Y_%m_%d_%H_%M.log",t3) #日志时间格式
print(t3_str)
2.datetiim模块,因为方法较多我就写在code里面了,后面有注释
#!/usr/bin/env python
#_*_coding:utf-8_*_
###datetime
#时间加减 可以对天 分钟 小时进行计算
print("datetime".center(60,"-"))
print(datetime.datetime.now())
print(datetime.datetime.fromtimestamp(time.time()-3600))
print(datetime.datetime.now() - datetime.timedelta(days=3)) #day hours mintes 前面的 + -控制加减
now = datetime.datetime.now() #可以直接替换时间
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里面了,后面有注释
#!/usr/bin/env python
#_*_coding:utf-8_*_
#高级的文件,文件夹,压缩包,处理模块
import shutil
#f1 = open("file_old.txt")
#f2 = open("file.new.txt",'w')
#shutil.copyfileobj(f1, f2)#因为是对象,所以你要先打开文件
#os.path.basename("/var/www/data1") 文件名最后显示data1
#os.path.join("/usr/local/data1")
#shutil.copy(r"c:笔记","test") #会拷贝到当前目录 上面2条是解释相当于 不需要打开文件
#copy 与 copyfile的区别在于,copy是会把权限copy过来
#shutil.copyfile(r"c:笔记","test")
#shutil.copy2() #拷贝文件和状态
#shutil.copytree(r"c:笔记","新笔记") #cp -rf拷贝目录过来
#shutil.rmtree()秭归删除
#shutil.move()移动
# shutil.make_archive(base_name, format, ...)
# 创建压缩包并返回文件路径,例如:zip、tar
# base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
# 如:www = > 保存至当前路径
# 如: / Users / wupeiqi / www = > 保存至 / Users / wupeiqi /
# format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
# root_dir: 要压缩的文件夹路径(默认当前目录)
# owner: 用户,默认当前用户
# group: 组,默认当前组
# logger: 用于记录日志,通常是logging.Logger对象
#shutil.make_archive(r"c:笔记",format="zip",root_dir=r"c:新笔记")
4.shelve模块,因为方法较多我就写在code里面了,后面有注释
#!/usr/bin/env python
#_*_coding:utf-8_*_
print("shelve".center(60,"-")) #是一个简单的k,v将内存数据通过文件持久化的模块,可以持久任何pickle
#可支持的Python数据格式
# import shelve
# d = shelve.open('shelve_test') # 打开一个文件
# def stu_data(name,age):
# print("register stu",name,age)
# name = ["alex", "rain", "test"]
# d["test"] = name # 持久化列表
# d['func'] = stu_data #内存地址 相当于 2个类型存储 然后用下面的来读取下来
# d.close()
# #执行过后会出现三个文件
#
# #应该新打开一个文件来load
# import shelve
# def stu_data(name,age):#加上就不会报错
# print("register stu",name,age) #加上就不会报错
# f = shelve.open("shelve_test")
# print(f["test"]) #打印出来的是 三个名字
# print(f["func"]("test,30")) #会打印不出来,因为func是内存地址,dump的话找对象找不到
5.xml处理模块,因为方法较多我就写在code里面了,后面有注释
#!/usr/bin/env python
#_*_coding:utf-8_*_
print("xml".center(60,"-"))
# import xml.etree.ElementTree as ET
# tree = ET.parse("test.xml")
# root = tree.getroot() #根节点 data
# print(root.tag)
# # 遍历xml文档
# for child in root:
# print(child.tag, child.attrib)
# for i in child:
# print(i.tag, i.text)
# # # 只遍历year 节点
# for node in root.iter('year'):
# print(node.tag, node.text)
5.hashlibl处理模块,因为方法较多我就写在code里面了,后面有注释
#!/usr/bin/env python
#_*_coding:utf-8_*_
print("hashlib".center(60,"-")) #一种跟md5相同的效验工具
import hashlib
m = hashlib.md5()
m.update(b"alex")
print(m.hexdigest()) #md5值
m.update(b"li")
print(m.hexdigest())
m2 = hashlib.md5()
m2.update(b"alexli")
print(m2.hexdigest()) #md5竟然是相同的
m3 = hashlib.sha256() #一般比较安全就256
m3.update(b"alexli")
print(m3.hexdigest())
import hmac
h = hmac.new(b'salt',b'hello')
print(h.hexdigest()) #这个更安全,一般用于网络上的消息加密传输
6.loggingl处理模块,因为方法较多我就写在code里面了,后面有注释
#!/usr/bin/env python
#_*_coding:utf-8_*_
print("logging".center(60,"-"))
import logging
logging.debug("test debug")
logging.info("test info")
logging.warning("this wron plees zhuyi")
logging.error("test error")
logging.critical("server is down") #默认warining 以下不打印
import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG) #打印到文件里面 报警的文件需要放在这下面才能生成
logging.basicConfig(filename='example.log',level=logging.DEBUG,format='%(asctime)s %(message)s',datefmt='%m/%d/%Y %I:%M:%S %p')#加入了时间
#format()参数里面可以加入级别各种日志格式 可以加一些分隔符 :-等
7.re正则,因为方法较多我就写在code里面了,后面有注释
#!/usr/bin/env python
#_*_coding:utf-8_*_
a = re.match("inet","inet address:10.10.10.10 netmask:20.20.20.20") #前面引号是规则 match是从头开始匹配
print(a) #
print(a.group())#规则是4个所以显示就是四个
#规则地方写入"\w+" \w匹配一个字符[a-zA-Z0-9] \w+匹配多个
#'.' 匹配除了\n外的任意一个字符,包括特殊字符
#'+' 匹配前一个字符一个或者多个
#'^' 匹配字符开头 但是match就是匹配开头,所以没啥意义
#'*' 匹配*号前的字符0次或多次 言外之意就是可以匹配不到 会返回空
#'?' 匹配字符一次或者0次 不能多
#'{m}' 匹配前一个字符m次 "\w{3}"
#'{n,m}' 匹配前一个字符多少到多少次 "\w{5,8}"
#'|' 匹配左边或右边的字符 "inet|INET"
#(...) 分组匹配
# print(re.search("(\d){2}(\d){2}(\d){2}","123456789 name:alex").group()) #这是匹配出来的结果 123456
# print(re.search("(\d){2}(\d){2}(\d){2}","123456789 name:alex").groups()) #2 4 6
# print(re.search("(\d\d)(\d\d)(\d\d)","123456789 name:alex").groups()) #12 34 56
# print(re.search("(\d{2})(\d{2})(\d{2})","123456789 name:alex").groups())
#'\A' 只从字符开头匹配
#'\z' 以数字结尾 同$
#'\d' 匹配0-9
#'\D' 匹配非数字
#'\w' 匹配[a-zA-Z0-9]
#'\W' 匹配非[a-zA-Z0-9] 就是特殊字符
#'s' 匹配空白字符 ,\t \n \r
#'(?P<name>...)' #分组匹配
").groupdict())
#groupdic() 字典形式 groups()列表
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"))
print(re.search("(\d{1,3}\.){3}\d{1,3}","inet address:10.10.10.10 netmask:20.20.20.20"))
print(re.findall("\d+","a555b3c5d6s")) #search 是匹配到了第一个就开始返回了,而findall是匹配所有了
print(re.findall("[a-z]","a555b3c5d6s"))
print(re.split("\d+","a555b3c5d6s6")) #split也是数字作为分隔符,但是侯后面会多出一个元素
print(re.sub("\d+","|","a555b3c5d6s6")) #匹配字符替换 以什么为分隔符给替换
print(re.sub("\d+","|","a555b3c5d6s6",count=2))
#反斜杠的困扰 比如目录格式
print(re.split("\\\\",r"c:\users\data\python35")) #加r就是字符串对待 这是以\为分隔符
print(re.search("a","ABC",flags=re.I)) #re.I 忽律大小写
print(re.search("^a","\nabc\neee",flags=re.M)) #re.M 匹配多行要不\n就换行
print(re.search(".+","\nabc\neee",flags=re.S)) #多行都匹配出来而且\n也匹配出来
8.configparser正则,因为方法较多我就写在code里面了,后面有注释
python学习道路(day6note)(time &datetime,random,shutil,shelve,xml处理,configparser,hashlib,logging模块,re正则表达式)的更多相关文章
- python模块基础之json,requeste,xml,configparser,logging,subprocess,shutil。
1.json模块 json 用于[字符串]和 [python基本数据类型] 间进行转换(可用于不同语言之前转换),json.loads,将字符串转成python的基本数据类型,json.dum ...
- collections、random、hashlib、configparser、logging模块
collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...
- python模块(shelve,xml,configparser,hashlib,logging)
1.1shelve模块 shelve 模块比pickle模块简单,只有一个open函数,返回类似字典对象,可读可写:key必须为字符串, 而值可以是python所支持的数据类型. shelve模块主要 ...
- python之hashlib、configparser、logging模块
hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数 ...
- Python:Day18 os模块、logging模块、正则表达式
迭代器 满足迭代器协议: 1.内部有next方法 2.内部有iter()方法 os模块 import os print(os.getcwd()) #C:\Users\Lowry\PycharmProj ...
- (常用)time,datetime,random,shutil(zipfile,tarfile),sys模块
a.time模块import time 时间分为三种形式1.时间戳 (时间秒数的表达形式, 从1970年开始)print(time.time())start_time=time.time()time. ...
- python学习笔记(四)random 、json模块
一.模块简介 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 导入模块 import module #导入模块 f ...
- python学习道路(day12note)(mysql操作,python链接mysql,redis)
1,针对mysql操作 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 设置密码 update user set password ...
- python学习道路即将结束
其实今天算是失眠了,所以打算整理一下自己的学习内容了! 今天是我看视频学习的第六天,已经学习到定义类和对象了,有时候回想python这门语言真的很入门吧,各种语法比较简易能懂. 入门首选 print( ...
随机推荐
- jquery-常用的运行函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mysql创建定时任务
一.前言 自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作 ...
- AngularJS常用指令
一.指令 1.ng-app 定义应用程序的根元素 <div ng-app="app"></div> var app = angular.module('ap ...
- 让EF飞一会儿:如何用Entity Framework 6 连接Sqlite数据库
获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/do ...
- 《C#高级编程(第六版)》泛型学习笔记(一):泛型优点和特性 (转载)
原文出处:http://www.cnblogs.com/xun126/archive/2011/01/13/1933838.html 泛型是CLR 2.0的一个新特性,在CLR 1.0中,要创建一个灵 ...
- PAT A 1118. Birds in Forest (25)【并查集】
并查集合并 #include<iostream> using namespace std; const int MAX = 10010; int father[MAX],root[MAX] ...
- redis数据类型之—Set
(1)set 简单介绍 set集合的数据是不重复的.无序的,一个集合类型键可以存储至多2^32-1 个字符串. (2)set 常用命令
- 关闭英文拼写检查,关闭xml验证
http://blog.sina.com.cn/s/blog_70b623e4010173ce.html eclipse里面的许多设置对于国内开发者日常使用不太适用,反而会成为干扰.既然是完全可配置的 ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- shell example02
输入值 //相加 add(){ echo "add two agrs..." echo "enter first one: " read arg1 echo & ...