five day --模块

Posted yuyou123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了five day --模块相关的知识,希望对你有一定的参考价值。

常用模块(记忆力)
re模块
collections模块
时间模块
random模块 随机数、打乱顺序
os模块 操作系统
sys模块 python解释器相关的模块
引入:模块 py文件  是写好了,但不直接使用的功能
    内置模块:安装完python自带的
    扩展模块:jagal    爬虫、自动化测试、AI,数据挖掘等   https://pypi.org/网址有所有模块;或在论坛上查看
    自定义模块:自己写的模块

一、collections模块

collections:
    ordereddict 有序字典  重点!小例子
    counter计算出现的次数,无实际使用作用   了解即可
    defaultdict  默认这个字典的value是一个空列表  随便写key不报错  了解即可  小例子
    namedtuple 可命名元组   重要!!例子1. p=(x,y)  p.x  2.card  流畅的python!书籍
    deque 双端队列  不常用    insert  pop(n) 少写

  

 1 # import collections
 2 # d = collections.OrderedDict()
 3 # print(d)
 4 #
 5 # d[\'电脑\'] = 10000
 6 # d[\'苹果\'] = 10
 7 # print(d)
 8 # for i in d:
 9 #     print(i,d[i])
10 # print(d[\'电脑\'])
collections.OrderedDict
 1 # l= [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
 2 # my_dict = {}
 3 # for value in  l:
 4 #     if value>66:
 5 #         if my_dict.has_key(\'k1\'):
 6 #             my_dict[\'k1\'].append(value)
 7 #         else:
 8 #             my_dict[\'k1\'] = [value]
 9 #     else:
10 #         if my_dict.has_key(\'k2\'):
11 #             my_dict[\'k2\'].append(value)
12 #         else:
13 #             my_dict[\'k2\'] = [value]
14 # import time
15 # time.sleep()
16 # from time import sleep
17 # sleep()
18 
19 # from collections import defaultdict
20 # values = [11, 22, 33,44,55,66,77,88,99,90]
21 # my_dict = defaultdict(list)
22 # for value in  values:
23 #     if value>66:
24 #         my_dict[\'k1\'].append(value)
25 #     else:
26 #         my_dict[\'k2\'].append(value)
27 # 默认这个字典的value是一个空列表
28 # d = {}
29 # print(my_dict)
30 # my_dict[\'a\'].append(1)
31 # my_dict[\'b\'].append(2)
32 # my_dict[\'c\'] = 10
33 # print(my_dict)
defaultdict
结果:

defaultdict(<class \'list\'>, {})
defaultdict(<class \'list\'>, {\'a\': [1], \'b\': [2], \'c\': 10})

1 from collections import namedtuple
2 # Point = namedtuple(\'Point\',[\'x\',\'y\'])
3 # p = Point(1,2)
4 # print(p.x)
5 # print(p.y)
6 # Card = namedtuple(\'card\',[\'rank\',\'suit\'])
7 # c = Card(\'2\',\'红心\')
8 # print(c.rank,c.suit)
namedtuple
 1 # from collections import deque
 2 # q = deque()
 3 # q.append(1)
 4 # q.append(2)
 5 # q.append(3)
 6 # q.append(3)
 7 # print(q)
 8 # print(q.pop())   
 9 # print(q)      
10 # q.appendleft(\'a\')
11 # q.appendleft(\'b\')
12 # q.appendleft(\'c\')
13 # print(q)
14 # print(q.popleft())
15 # print(q.popleft())
16 
17 结果:
18 deque([1, 2, 3, 3])
19 3
20 deque([1, 2, 3])
21 deque([\'c\', \'b\', \'a\', 1, 2, 3])
22 c
23 b
deque

二、time模块

时间模块:
    1.time.time()  时间戳时间 英国伦敦时间 1970 1 1 00:00:00
                                北京       1970 1 1 08:00:00
    2.格式化时间--用字符串表示的时间
    time.strftime(\'%Y-%m-%d  %H:%M:%S\') 年月日时分秒   %x时间  %c日期+时间
    3.结构化时间--是时间戳(机器)转化成格式化时间(人)的桥梁
    time.localtime()    可类似于namedtuple取值   夏令时:调节时间,现在不用
    转化方式---图
    思考:1.能否拿到当前时间的月初1号的0点的时间戳时间            ?格式化-结构化-时间戳
        2.计算时间差--任意两个时间之间经历了多少年月日时分秒     ??
    datetime 同time

小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

几种格式之间的转换

复制代码
#时间戳-->结构化时间
#time.gmtime(时间戳)    #UTC时间,与英国伦敦当地时间一致
#time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间 
>>>time.gmtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
>>>time.localtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)

#结构化时间-->时间戳 
#time.mktime(结构化时间)
>>>time_tuple = time.localtime(1500000000)
>>>time.mktime(time_tuple)
1500000000.0
复制代码
复制代码
#结构化时间-->字符串时间
#time.strftime("格式定义","结构化时间")  结构化时间参数若不传,则现实当前时间
>>>time.strftime("%Y-%m-%d %X")
\'2017-07-24 14:55:36\'
>>>time.strftime("%Y-%m-%d",time.localtime(1500000000))
\'2017-07-14\'

#字符串时间-->结构化时间
#time.strptime(时间字符串,字符串对应格式)
>>>time.strptime("2017-03-16","%Y-%m-%d")
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
>>>time.strptime("07/24/2017","%m/%d/%Y")
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)
复制代码

 

复制代码
#结构化时间 --> %a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
>>>time.asctime(time.localtime(1500000000))
\'Fri Jul 14 10:40:00 2017\'
>>>time.asctime()
\'Mon Jul 24 15:18:33 2017\'

#时间戳 --> %a %d %d %H:%M:%S %Y串
#time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
>>>time.ctime()
\'Mon Jul 24 15:19:07 2017\'
>>>time.ctime(1500000000)
\'Fri Jul 14 10:40:00 2017\' 
复制代码

 

三、random模块

random模块    随机数、打乱顺序
    1.使用情景:发红包    数学建模问题  ??自己考虑
    2.验证码:例子 数字 字母(65,90)A-Z (97-122)a-z  0-9数字
        某一位字母或数字也是随机 random.choice()  注意强转str  练习!!
 1 # import random
 2 # s = \'\'
 3 # for i in range(4):
 4 #     s += str(random.randint(0,9))
 5 # print(s)
 6 
 7 # 数字 字母
 8 # print(chr(98))   # (65,90)A (97,122)a
 9 # import random
10 # num = random.randint(65,90)
11 # print(chr(num))
12 # num = random.randint(97,122)
13 # print(chr(num))
14 
15 # 某一位 到底是一个字母 还是一个数字的事儿也是随机的
16 # import random
17 # id = \'\'
18 # for i in range(6):
19 #     num = random.randint(65,90)
20 #     alpha1 = chr(num)
21 #     num = random.randint(97,122)
22 #     alpha2 = chr(num)
23 #     num3 = str(random.randint(0,9))
24 #     print(alpha1,alpha2,num3)
25 #     s = random.choice([alpha1,alpha2,num3])
26 #     id+=s
27 # print(id)
例子

 print(id)   打印六位

四、sys模块

sys模块    python解释器相关的模块
    1.sys.path  重要!  作用:讲模块时详细讲
        一个模块是否能够被导入,全看在不在sys.path列表所包含的路径下
        模块名字不能乱起
    2.sys.argv 脚本执行   重要! 当前文件的文件路径
    在执行python脚本的时候,可以传递一些参数进来   在命令行执行可 多传参数 ![路径 ,user ,name]
    mysql输入例子
    3. sys.modules   了解  放了所有在解释器运行的过程中导入的模块名   作用:讲模块时讲
    4.sys.exit()  了解 解释器退出   程序结束
 1 import sys  # python解释器
 2 # sys.exit()   # 解释器退出 程序结束
 3 # print(\'*\'*10)    #**********
 4 # print(sys.path)
 5 # 一个模块是否能够被导入 全看在不在sys.path列表所包含的路径下
 6 # print(sys.modules)  # 放了所有在解释器运行的过程中导入的模块名
 7 
 8 # print(sys.argv)
 9 # if sys.argv[1] == \'alex\' and sys.argv[2] == \'alex3714\':
10 #     print(\'可以执行下面的n行代码\')
11 # else:
12 #     sys.exit()
13 # 在执行python脚本的时候,可以传递一些参数进来
14 # mysql username password
View Code

 

五、os模块

 1 os模块     操作系统   运维比较常用
 2     1.代码执行删除不可恢复,慎重使用
 3     2.分类:和文件相关    和工作目录相关 getcwd  表现操作系统差异的 os.pathsep 例子
 4     os.system  win gbk  pycharm utf-8  会有乱码  #exec 执行字符串中代码,无返回值  慎用
 5         加上.read()  不乱码
 6         os.system("bash command")  运行shell命令,直接显示
 7         os.popen("bash command).read()  运行shell命令,获取执行结果
 8     path系列
 9         r\' 转义  取消所有的转义符的转义
10         split===basename+dirname (目录)
11         os.path.join 路径的拼接  重要!
12         os.path.getsize(path) 返回path的大小 注: 文件大小的时候才有效 文件夹的大小4096
13             计算文件夹下所有文件的总大小:递归、堆栈思想    小例子 !面试题!!!

 

 1 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
 2 os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
 3 os.curdir  返回当前目录: (\'.\')
 4 os.pardir  获取当前目录的父目录字符串名:(\'..\')
 5 os.makedirs(\'dirname1/dirname2\')    可生成多层递归目录
 6 os.removedirs(\'dirname1\')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
 7 os.mkdir(\'dirname\')    生成单级目录;相当于shell中mkdir dirname
 8 os.rmdir(\'dirname\')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
 9 os.listdir(\'dirname\')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
10 os.remove()  删除一个文件
11 os.rename("oldname","newname")  重命名文件/目录
12 os.stat(\'path/filename\')  获取文件/目录信息
13 os.sep    输出操作系统特定的路径分隔符,win下为"\\\\",Linux下为"/"
14 os.linesep    输出当前平台使用的行终止符,win下为"\\t\\n",Linux下为"\\n"
15 os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
16 os.name    输出字符串指示当前使用平台。win->\'nt\'; Linux->\'posix\'
17 os.system("bash command")  运行shell命令,直接显示
18 os.popen("bash command).read()  运行shell命令,获取执行结果
19 os.environ  获取系统环境变量
20 
21 
22 os.path
23 os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\\结尾,那么就会返回空值。
24                         即os.path.split(path)的第二个元素
25 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
26 os.path.isabs(path)  如果path是绝对路径,返回True
27 os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
28 os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
29 os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
30 os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
31 os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
32 os.path.getsize(path) 返回path的大小
33 \'\'\'
View Code

 

 1 # os模块
 2 # import os
 3 # print(os.getcwd())
 4 # os.chdir(r\'D:\\EVA\')
 5 # print(os.getcwd())
 6 # open(\'aaaaaaa\',\'w\').close()   # 文件创建到了当前工作目录下
 7 
 8 # import os
 9 # \'path1%spath2\'%os.pathsep
10 
11 import os
12 # os.system("dir")   # exec
13 # ret = os.popen(\'dir\').read()
14 # print(ret)
15 
16 # win linux
17     # 操作系统自己有的一种简单的语言
18 
19 print(os.path.abspath(\'4.模块.py\'))
20 print(os.path.dirname(r\'D:\\EVA\\周末班python21\\day5\\4.模块.py\'))
21 print(os.path.split(r\'D:\\EVA\\周末班python21\\day5\\4.模块.py\'))
22 print(os.path.basename(r\'D:\\EVA\\周末班python21\\day5\\4.模块.py\'))
23 # print(\'\\\\n\\\\t\\\\t\\\\n\')
24 # print(r\'\\n\\t\\t\\n\')   # real
25 # print(os.path.dirname(r\'D:\\EVA\\周末班python21\\day5\'))
26 #
27 # print(os.path.join(\'D:\\\\\',\'EVA\',\'PYTHON\',\'AAA\'))
28 
29 # print(os.path.getsize(r\'D:\\EVA\\周末班python21\\day5\\4.模块.py\'))
30 # print(os.path.getsize(r\'D:\\EVA\\周末班python21\\day5\'))
31 # ret = os.listdir(r\'D:\\EVA\\周末班python21\\day5\')
32 # print(ret)
33 # sum = 0
34 # for path in ret:
35 #     if os.path.isfile(path) is True:
36 #         sum+= os.path.getsize(path)
37 # print(sum)
38 
39 # 计算文件夹的总大小
笔记

 

六、re模块

 1 re模块 非常重要!!!
 2     1.引入:手机号码
 3     2.正则表达式:字符串匹配相关的操作的时候,用到的一种规则
 4         在线测试工具 http://tool.chinaz.com/regex/
 5         正则表达式规则
 6             字符组:一个字符组只代表一个字符  范围:一个范围段的是正序的
 7                 [0-9a-fA-F]   可以匹配数字,大小写形式的a~f,用来验证十六进制字符
 8             元字符:有一个表copy一下 ^ $非常重要  $字符串的最后 一个结果  | 匹配第一个就返回,不判断第二个
 9             量词:[1-9][0-9]{10}   一次,10次    *  +  ? {n}   {n,}   {n,m}
10                 特别原则:正则表达式中的所有量词,都会尽量多的为你匹配    解释:回溯算法
11                 例子:匹配整数和小数  \\d+\\.?\\d*  1.\\.转义  2.每一个元字符后都可以接量词
12         总结:。。。。
13         ?写在量词后面   惰性匹配
14             注:.*x  贪婪匹配 ,回溯算法    .*?x  惰性匹配,先检测?后的字符  就是取前面任意长度的字符,直到一个x出现
15         转义:测试工具写好后,加r\'
16 
17         分组:匹配整数和小数  \\d+(\\.\\d+)?   1  2.2
18             身份证号:最后两个写法正确      书籍:正则指引
19         常用方法:。。
20             re.search()   与findall 匹配所有例子  内存地址 group
21                 search找第一个
22                 返回的值不是一个直接的结果,而是一个内存地址,需要使用.group()取值
23                 如果匹配不上,返回None,,就不能group了 if ret:print(ret.group())
24             match   在search基础上 给每一条正则都加上了一个^25             。。
26             最后两个 了解即可
27             注意:1.加?:  2.find不常用   看四个练习题
28 
29         正则表达式本身也和python没有什么关系,就是匹配字符串内容的一种规则。
30         使用python中的re模块去操作正则表达式
# 元字符 对一个字符的匹配创建的一些规则
# 这些规则是在正则表达式中有着特殊意义的符号
# 如果要匹配的字符刚好是和元字符一模一样 那么需要对这个元字符进行转义

# 量词 量词跟在一个元字符的后面 约束某个字符的规则能够重复多少次

# 正则表达式默认 贪婪匹配 会在当前量词约束的范围内匹配最多的次数

字符:

 
元字符
 
匹配内容
匹配除换行符以外的任意字符
\\w 匹配字母或数字或下划线
\\s 匹配任意的空白符
\\d 匹配数字
\\n 匹配一个换行符
\\t 匹配一个制表符
\\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\\W
匹配非字母或数字或下划线
\\D
匹配非数字
\\S
匹配非空白符
a|b
匹配字符a或字符b
()
匹配括号内的表达式,也表示一个组
[...]
匹配字符组中的字符
[^...]
匹配除了字符组中字符的所有字符

 

量词:

量词
用法说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

以上是关于five day --模块的主要内容,如果未能解决你的问题,请参考以下文章

five day Linux 基础学习

Day Five

day five,随便取得一个名字

vulnhub five86-1

Noip2017酱油记(自我吐槽版)

five86-3靶机渗透攻略