#import random
#
# #取随机小数:数学计算
# print(random.random()) # 取0-1之间的小数
# print(random.uniform(1,2)) #取1-2之间的小数,括号里面的范围可以改变
#
# #取随机整数
#
# print(random.randint(1,2)) #[1,2]
# print(random.randrange(1,2)) #[1,2)
# print(random.randrange(1,200,2)) #取1-200之间取奇数随机数,步长为2即1,3,5,7,9
#
# l = ['a','b',(1,2),123]
# print(random.choice(l)) #在列表中随机取一个
# print(random.sample(l,2)) #在列表中随机取两个元素
#验证码 - 练习
#4位数字验证码
#6位数字验证码
#6位数字+字母验证码
#发红包 - 作业
#红包数量 钱数
#拼手气红包
# 1.查看一下2000000000时间戳时间表示的年月
# 2.将2008-8-8转换成时间戳时间
# 3.请计算当前时间的当前月1号的时间戳时间取出来 - 函数
# 4.计算时间差
#2018-8-19 22:10:8 2018-8-20 11:07:3
#经过了多少时分秒
# import time
# struct_time = time.localtime(2000000000)
# print(struct_time)
# #time.struct_time(tm_year=2033, tm_mon=5, tm_mday=18, tm_hour=11, tm_min=33, tm_sec=20, tm_wday=2, tm_yday=138, tm_isdst=0)
#今日主要内容之前情回顾:
#正则表达式:
# 元字符: \w \d \s \n \t \W \S \D \b ^ 尖角号 $ . [] [^] () |
# [0-9] \d
# [1-9]
# [\da-zA-Z]
#. :匹配除换行符"\n"以外的任意字符
#\ :转义字符,使后一个字符改变原来的意思.如果字符串中有字符*需要匹配,可以使用\*或者字符集{*}
#[...]:字符集,对应的位置可以是字符集中任意字符.字符集中的字符可以逐个列出,也可以给出范围,如[abc]
#或者是[a-c],第一个字符如果是^,则表示取反,如[^abc]表示不是abc的其他字符.所有的特殊字符在字符集中
# 都失去其原有的特殊含义.在字符集中如果要使用].-或^,可以在前面加上反斜杠,或者把],-放在第一个字符,把^
#放在非第一个字符
#\d 数字:[0-9]
#\D 非数字:[^\d]
#\s 空白字符:[<空格> \t\r\n\f\v]
#\S 非空白字符:[^\s]
#\w 单词字符:[0-9a-zA-Z_]包括了数字字母下划线
#\W 非单词字符:[^\w]
#量词 : {n} {n,} {n,m} * ? +
#* :匹配前一个字符0或无限次 abc*
#+:匹配前一个字符1次货无限次. abc+
#?:匹配前一个字符0次或1次. abc?
#{n}:匹配前一个字符n次 ab{2}c 匹配字符:abbc
#{n,}:至少匹配n次,至无限次
#{n,m}:匹配前一个字符n到m次 ab{1,2}c 匹配字符abc,abbc
#*?, +?, ?? {m,n}?,使* + ? {m,n}变成非贪婪模式
#边界匹配:
#^ :匹配字符串开头,
# 在多行模式中匹配每一行的开头. ^abc 匹配字符abc
#$ :匹配字符串末尾,
# 在多行模式中匹配每一行的末尾. abc$ 匹配字符abc
#\A 仅匹配字符串开头 \Aabc 匹配字符abc
#\Z 仅匹配字符串末尾 abc\Z 匹配字符abc
#\b 匹配\w和\W之间 a\b!bc a!bc
# |:|代表左右表达式任意匹配一个.它总是先尝试匹配左边的表达式
#一旦左边的表达式成功匹配则跳过右边的表达式
#如果|没有被包括在()中,则它的范围是整个正则表达式 abc|def
#(...) :被括起来的表达式将作为分组,从表达式左边开始每遇到
#一个分组的左括号"(",编号+1.另外,分组表达式作为一个整体,可以接数量词.
#表达式中的|仅在该组有效.
#(?P<name>...):分组,除了原有的编号外再指定一个额外的别名.
#\<number>:引用编号为<number>的分组匹配到的字符串. (\d)abc\1
#(?P = name):引用别名为<name>的分组匹配到的字符串
#转义符:
# python str : '\'
# 正则表达式中的'\'到了python中都会变成'\\'
# r'\w' 在python当中\不转义了,在Python中就是一个普通的'\',但是在正则表达式中它还是表示一个转义符
# 贪婪匹配/惰性匹配 :
# .*x 贪婪 匹配任意内容最多次,直到最后一个X停止 回溯算法
# .*?X 惰性 匹配任意内容最少次,遇到第一个X就停止
# re模块
# findall 匹配所有 列表
# search 匹配第一个 变量.group(),没匹配到返回None
# match 从头开始匹配第一个
# split sub subn
# finditer compile
# finditer 返回一个迭代器,所有匹配到的内容需要迭代取到,迭代取到的每一个结果都需要group取具体值
# -- 节省内存空间
# compile 编译,先把一个正则表达式编译,编译之后,在之后多次使用的过程不用重新编译
# -- 节省时间 提高效率
# 分组:()
# 1.给不止一个字符的整体做量词约束的时候 www(\.[\w]+)+ www.baidu.com
# 2.优先显示,当要匹配的内容和不想匹配的内容混在一起的时候,
# 就匹配出所有内容,但是对实际需要的内容进行分组
# 3.分组和re模块中的方法 :
# findall : 分组优先显示 取消(?:正则)
# search :
# 可以通过.group(index)来取分组中的内容
# 可以通过.group(name)来取分组中的内容
# 正则 (?P<name>正则)
# 使用这个分组 ?P=name
# split : 会保留分组内的内容到切割的结果中
#今日内容之二,本周安排和今日主要内容
#面向对象
#讲解:计算器
#random模块
#时间相关的 time模块
#os
#sys
#序列化模块
#json
#pickle
#collections 模块 - 数据类型的扩展/面向对象进阶
#今日主要内容之三random,取随机数的模块
#import random
#取随机小时:数学计算
# print(random.random()) #取0-1之间的小数
# print(random.uniform(1,2)) #取1-2之间的小数
#取随机整数:彩票 抽奖
# print(random.randint(1,2)) #取值范围[1,2]
# print(random.randrange(1,2)) #[1,2)
# print(random.randrange(1,200,2))
#取值范围为1-200,步长为2,的随机奇数
#从一个列表中随机抽取值:抽奖
#l = ['a','b',(1,2),123]
# print(random.choice(l)) #从列表l中随机抽取一个元素
# print(random.sample(l,2)) #从列表l中随机抽取两个元素
#打乱一个列表的顺序,在原列表的基础上直接进行修改,节省空间
#洗牌
# random.shuffle(l)
# print(l)
#验证码 -练习
#4位数字验证码
#6位数字验证码
#6位数字+字母验证码
#4位数字验证码
#算法实现
# s = "" #创建一个空字符串
# for i in range(4): #字符串的长度为4
# num = random.randint(0,9) #从0-9中随机取一个数
# s += str(num) #将取出来的数字字符串化,添加到s中
# print(s) #打印输出字符串
#
#
# s = "" #创建一个空字符串
# for i in range(6): #字符串的长度为6
# num = random.randint(0,9) #从0-9中随机取一个数
# s += str(num) #将取出来的数字字符串化,添加到s中
# print(s) #打印输出字符串
#函数实现功能
# def code(n=6):
# s = ''
# for i in range(n):
# num = random.randint(0,9)
# s += str(num)
# return s
# print(code(4))
# print(code())
#6位数字+字母验证码
#一个位置上 出现的是数字还是字母,应该是个随机事件
#随机字母如何生成
# s = ''
# for i in range(6):
# #大写字母,小写字母,数字各随机生成一个
# num = str(random.randint(0,9)) #数字从0-9,随机生成一个,并字符化
# alpha_upper = chr(random.randint(65,90))
# #大写字母随机抽取一个,ASCII码中65-90对应的大写字母是A-Z
# alpha_lower = chr(random.randint(97,122))
# #小写字母随机抽取一个,ASCII码中97-122对应的小写字母是a-z
# res = random.choice([num,alpha_upper,alpha_lower])
# #在从得到的大小写字母和数字中,随机抽取
# s += res
# print(s)
#print(chr(66)) # = B
#函数版本
# def code(n = 6):
# s = ''
# for i in range(n):
# num = str(random.randint(0,9))
# alpha_upper = chr(random.randint(65,90))
# alpha_lower = chr(random.randint(97,122))
# res = random.choice([num,alpha_upper,alpha_lower])
# s += res
# return s
# print(code(4))
# print(code())
#进阶函数
#4位数字验证码
#6位数字验证码
#6位数字+字母验证码
# def code(n = 6,alpha = True):
# s = ''
# for i in range(n):
# if alpha:
# num = str(random.randint(0,9))
# alpha_upper = chr(random.randint(65,90))
# alpha_lower = chr(random.randint(97,122))
# res = random.choice([num,alpha_upper,alpha_lower])
# s += res
# else:
# num = random.randint(0,9)
# s += str(num)
# return s
# print(code(4))
# print(code())
# def code(n=6,alpha = True):
# s = ''
# for i in range(n):
# num = str(random.randint(0,9))
# if alpha:
# alpha_upper = chr(random.randint(65,90))
# alpha_lower = chr(random.randint(97,122))
# num = random.choice([num,alpha_upper,alpha_lower])
# s += num
# return s
# print(code(4,False))
# print(code(alpha=False))
#发红包 - 练习
#红包数量 钱数
#拼手气红包
#今日内容之四,time时间模块
#import time
#time.sleep(2) 程序执行到这里,会等待两秒
#time模块主要是用来和时间打交道的
#时间格式:
#'2018-8-20' '2018.8.20' 字符串数据类型 格式化时间-给人看的
#结构化时间
#1534732642.617272 浮点型数据类型,以秒为单位
#时间戳时间 - 给机器计算用的
#1970 1 1 0:0:0
#时间戳时间
#print(time.time())
#格式化时间
# print(time.strftime('%Y-%m-%d %H:%M:%S')) # str format time
# print(time.strftime('%y-%m-%d %H:%M:%S')) # str format time
# print(time.strftime('%c'))
# 打印输出的结果为:
# 2018-08-20 17:32:33
# 18-08-20 17:32:33
# Mon Aug 20 17:32:33 2018
#结构化时间
# struct_time = time.localtime() # 当地时间
# print(struct_time)
# print(struct_time.tm_mon)
# print(struct_time[1])
#时间戳换成字符串时间
# print(time.time()) #时间戳时间
# struct_time = time.localtime(1500000000)
# print(time.gmtime(1500000000))
# ret = time.strftime('%y-%m-%d %H:%M:%S',struct_time)
# #将结构化时间转换成字符串时间
# print(ret)
#字符串时间转换成时间戳
# struct_time = time.strptime('2018-8-8','%Y-%m-%d')
# print(struct_time)
# res = time.mktime(struct_time)
# print(res)
#1.查看一下2000000000时间戳时间表示的年月日
#时间戳-结构化-格式化
# struct_time = time.localtime(2000000000)
# #时间戳时间
# #print(struct_time) #结构化时间
# print(time.strftime('%y-%m-%d',struct_time)) #格式化时间33-05-18
#2.将2008-8-8转换成时间戳时间
# ti = time.strptime('2008-8-8','%Y-%m-%d')
# print(time.mktime(ti))
# 打印输出的结果为1218124800.0
#3.请将当前时间的当前月1号的时间戳时间取出来 - 函数
#2018-8-1
# def get_time():
# st = time.localtime()
# st2=time.strptime('%s-%s-1'%(st.tm_year,st.tm_mon),'%Y-%m-%d')
# return time.mktime(st2)
# print(get_time())
#4.计算时差 - 函数
# 从2018-8-19 22:10:8
# 到2018-8-20 11:07:3 经过了多少时分秒......
# str_time1 = '2018-8-19 22:10:8'
# str_time2 = '2018-8-20 11:07:3'
# struct_t1 = time.strptime(str_time1,'%Y-%m-%d %H:%M:%S')
# struct_t2 = time.strptime(str_time2,'%Y-%m-%d %H:%M:%S')
# timestamp1 = time.mktime(struct_t1)
# timestamp2 = time.mktime(struct_t2)
# sub_time = timestamp2 - timestamp1
# gm_time = time.gmtime(sub_time)
#1970-1-1 00:00:00
# 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月0天12小时56分钟55秒"
#今日内容之五,sys模块
# import sys
# sys.modules
# print(sys.modules)
# print(sys.modules['re'].finall('\d','abc126'))
#今日模块之六,os模块,os是和操作系统交互的模块
import os
# os.makedirs('dir1/dir2') #在文件dir1下创建了一个dir2文件
# os.mkdir('dir3') #在当前文件夹创建一个dir3文件夹
# os.mkdir('dir3/dir4') #在dir3文件下创建一个dir4文件夹
#只能删空文件夹
#os.rmdir('dir3/dir4') #删除dir3文件夹里的dir4文件夹
#os.removedirs('dir3/dir4')
#os.removedirs('dir1/dir2') #将dir2文件夹删除后,dir1也是一个空文件夹,然后删掉
#print(os.stat(r'E:\python老男孩\python全栈开发15期'))
#打印输出的结果为:os.stat_result(st_mode=16895, st_ino=281474976710739,
# st_dev=913232, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1534402437,
# st_mtime=1534402437, st_ctime=1533027595)
#exec/eval 执行的是字符串数据类型的python代码
#os.system 和 os.open是执行字符串数据类型的 命令行代码
#os.system('dir') #执行操作系统的命令,没有返回值,实际的操作/删除一个文件 创建一个文件夹exec
#程序要处理这些路径
#
# ret = os.popen('dir') #查看类的操作
# s = ret.read()
# print(s)
# print(s.split('\n'))
# os.listdir / os.path.join
# file_list = os.listdir('E:****')
# for path in file_list:
# print(os.path.join('E:****,path))
#
# print('-->',os.getcwd()) #current work dir 当前工作目录
# #并不指当前文件所在的目录
# #当前文件是在哪个目录下执行的
# ret = os.popen('dir') #是和做查看类的操作
# s = ret.read()
# print(s)
# os.chdir('E:****') #切换当前的工作目录
# ret = os.popen('dir')
# s = ret.read()
# print(s)
#验证码
#发红包
#计算时间差-函数
#sys.argv 登录验证
#os 模块:
#用户登录,登陆之后,给这个用户创建一个属于他的文件,以用户名命名
#如果用户注销,删除这个文件夹
转载于:https://www.cnblogs.com/rydong/p/9508049.html