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[\'电脑\'])
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(<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)
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
二、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
五、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 \'\'\'
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 --模块的主要内容,如果未能解决你的问题,请参考以下文章