简单模块初识

人山人海

看得到的看不到的都应该看到

 1.查看一下2000000000时间戳时间表示的年月日

 2.2008-8-8转换成时间戳时间

 3.请将当前时间的当前月1号的时间戳时间取出来 - 函数

 4.计算时间差

     2018-8-19 22:10:8 2018-8-20 11:07:3

     经过了多少时分秒

  方法

学练改管测

代码质量相关的参数: 简洁渡\时间\空间

复习正则 难中之难

正则表达式

元字符:\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))

过去了00912小时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)

猜你喜欢

转载自www.cnblogs.com/zzy7372/p/9505521.html
今日推荐