人山人海python
看获得的看不到的都应该看到程序员
1.查看一下2000000000时间戳时间表示的年月日正则表达式
2.将2008-8-8转换成时间戳时间算法
3.请将当前时间的当前月1号的时间戳时间取出来 - 函数运维
4.计算时间差dom
2018-8-19 22:10:8 2018-8-20 11:07:3函数
通过了多少时分秒spa
方法操作系统
学练改管测命令行
代码质量相关的参数: 简洁渡\时间\空间
复习正则 难中之难
正则表达式
元字符:\w\d\s\n\t\W\D\S\b是以什么结尾 ^匹配一个字符串的开始
$匹配一个字符串的结尾[] ()|[^]除了字符组中的全部字符
[0-9]\d 这种状况下 应该\d
[1-9] 特殊状况 特殊处理
[\da-zA-Z]
量次:{n}{n,}{n,m} * ? +
转义符 :
Python str: “\”
正则表达式中的”\”到了python中都会变成”\\”
r”\w” 在python当中\不转义了,在python中就是一个普通的”\”,
可是在正则表达式中他仍是表示一个转义符
贪婪匹配/惰性匹配:
.*?贪婪匹配 匹配任意字符内容最屡次,知道最后一个x中止 回溯算法
.*?x 惰性 匹配任意内容最少次,直到遇到第一个x就中止
Re模块
Findall 匹配全部 返回一个列表装上所匹配到的内容
Search 匹配第一个 返回的是个变量,须要经过.group()接受返回的东西,
若是没匹配到就返回None
Match至关于在search前面加了个^只匹配特定的字符
Split 切割 返回的是一个列表 加个括号能够把被切掉的内容放到列表中
Sub subn 都是替换re.sub(“被替换的内容”,替换的内容,字符串,数字表示替换的次数)
区别在乎 subn 返回的是一个元祖(替换后的内容,实际被替换的次数)
Finditer complie
Finditer 返回一个迭代器,全部匹配到的内容须要迭代取到,
迭代取到的每个结果 都须要group 取具体值 效果:能够节省内存
Complie 编译先把一个正则表达式编译,编译以后,在以后屡次使用的过程当中不用从新编译
== 节省时间 提升效率
分组
1,给不止一个字符的总体量词约束的时候www(\.\w+)+ www.baidu.com
2,优先显示,当要匹配的内容和不想匹配的内容混在一块儿的时候
就匹配出全部内容,可是对实际须要的内容进行分组
3,分组和re模块中的方法:
Findall :分组优先显示 取消分组优先(?:正则表达式)
Search :
能够经过.group(index)来取分组中的内容
能够经过.group(name)来取分组中的内容
正则(?P<name>正则])
使用这个分组 ?P=name
Split :会保留分组内的内容到切割的结果中
Import random 取随机数的模块
取随机小数 : 数学计算
# print(random.random()) #取0-1之间的小数
# print(random.uniform(0,8))#取任意俩个数之间的小数
#
#
# print(random.randint(1,3))#左右都是闭区间,能够取到最边界的值
# print(random.randrange(1,3))#这是左闭合又开区间,能够取到左侧,取不到右侧,
# #取随机整数,彩票,抽奖
# l=[ "a","b",(1,2),2333]
# print(random.choice(l))# 随机从l中抽取一个返回
# #b
# print(random.sample(l,3))#解释为抽样分析 前面是须要须要抽取的可迭代对象,后面是要抽取的个数,
# ['b', 2333, 'a']
Random.shuffle(list)
l=[ "a","b",(1,2),2333]
random.shuffle(l)
print(l)
[(1, 2), 'a', 2333, 'b
验证码_ 课上练习
4位数字验证码
6位数字验证码
7位数字+字母验证码
import random
s=""
for c in range(4):
num=random.randint(0,9)
s +=str(num)
print(s)
1142
def yzm(n = 6):
s=""
for c in range(n):
num = random.randint(0, 9)
s += str(num)
return s
get=yzm()
print(get)
print(yzm(8))
073245
10012804
升级版本
def yzm(n=6,alphanet=True):#alphamet位False 则显示结果为数字
s=""
for c in range(n):
number = str(random.randint(0, 9))
if alphanet:
alphanet_upper = chr(random.randint(65, 90)) #ascii 65是大写 97是小写
alphanet_lower = chr(random.randint(97, 122))
number = random.choice([number, alphanet_lower, alphanet_upper])
s += number
return s
print(yzm(4,alphanet=False))
print(yzm())
时间模块
Import time
Time.sleep(2) 程序走到这里暂停2秒
Time 模块 主要是和时间打交道的
时间合适
‘’2018.-8-20” ‘’2018.8.20’ 字符串数据类型 格式化时间_给人看的
15347344655.617272 浮点型数据类型,以s秒为单位 时间戳时间-给机器看的
1970 1 1 0:0:0 英国伦敦时间 为起始的位置
在中国 默认是北京时间 比伦敦早八个小时
时间戳时间
Print(time.time)
print(time.time())#时间戳时间
print(time.strftime("%Y-%m-%d %H:%M:%S"))#当前为北京时间格式化时间
print(time.strftime("%c"))#"%c" 默认为英国格式 星期 月份 日 时:分:秒 年
#结构化时间
strct_time=time.localtime()
print(strct_time)
print(strct_time.tm_mon)#这个想输出什么就标记tm_?
1534759016.476882
2018-08-20 17:56:56
Mon Aug 20 17:56:56 2018
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=17, tm_min=56, tm_sec=56, tm_wday=0, tm_yday=232, tm_isdst=0)
8
时间戳时间转化为格式化时间
# struct_time = time.localtime()
# print(struct_time)
# format_time = time.strftime(struct_time)
# print(format_time)
# struct_time = time.localtime(1500000000)
# print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time))
#2017-07-14 10:40:00
#格式化时间转时间戳
# struct_time=time.strptime("2018-8-8","%Y-%m-%d")
# print(struct_time)
# res=time.mktime(struct_time)
# print(res)
#
# # 3请把当前时间的当前月 1号的时间戳时间取出来-
# def get():
# struct_time=time.localtime()
# struct_time2=time.strptime("%s-%s-1"%(struct_time.tm_year,struct_time.tm_mon),'%Y-%m-%d')
# return time.mktime(struct_time2)
# print(get())
# 计算时间差 _函数
str_time1="2018-8-19 22:10:8"
str_time2="2018-8-29 11:7:8"
struct_time1=time.strptime(str_time1,'%Y-%m-%d %H:%M:%S')
struct_time2=time.strptime(str_time2,'%Y-%m-%d %H:%M:%S')
timestamp1 = time.mktime(struct_time1)
timestamp2 = time.mktime(struct_time2)
sub_time = timestamp2-timestamp1
gm_time = time.gmtime(sub_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(gm_time.tm_year-1970,gm_time.tm_mon-1,
gm_time.tm_mday-1,gm_time.tm_hour,
gm_time.tm_min,gm_time.tm_sec))
过去了0年0月9天12小时57分钟0秒
\
\
Sys是和python 解释器打交道的
Sys.argv
Print(sys.argv) # argv 的第一个参数 是python这个命令后面的值
usr = input('username')
# pwd = input('password')
# usr = sys.argv[1]
# pwd = sys.argv[2]
# if usr == 'alex' and pwd == 'alex3714':
# print('登陆成功')
# else:
# exit()
1. 程序员 运维人员 在命令行运行代码
# 2. 操做系统input事件 阻塞 退出了CPU的竞争
# sys.path
# print(sys.path)
# 模块是存在解释器里的么??? 不是
# 模块应该是存在硬盘上
# 可是我在使用的时候 import --> 这个模块才到内存中
# 一个模块可否被顺利的导入 全看sys.path下面有没有这个模块所在的
# 自定义模块的时候 导入模块的时候 还须要再关注 sys.path
import re
# sys.modules
# print(sys.modules) # 是咱们导入到内存中的全部模块的名字 : 这个模块的内存地址
# print(sys.modules['re'].findall('\d','abc126'))
Os 模块
Os 是和操做系统交互的模块
import os# os.makedirs("dir1/dir2")# os.removedirs("dir1/dir2")# print(os.stat(r'D:\zzy\8.15\998.py'))#exec/eval 执行的是字符串数据类型的python代码# os.system("dir")## ret=os.popen("dir")# s=ret.read()# print(s)# os.listdir / os.path.join# file_lst = os.listdir('D:\zzy\8.15')# for path in file_lst:# print(os.path.join('D:\zzy\8.15',path))### print(">>>>",os.getcwd())# ret=os.popen("dir")# s=ret.read()# print(s)os.chdir('D:\zzy\8.15') # 切换当前的工做目录ret = os.popen('dir') # 是和作查看类的操做s =ret.read()print(s)