1. 模块介绍:
为什么要有模块
python其实有很多现成的方法,但是这些函数不能全都放在内存里为用户节省很多不必要的内存消耗用不到的功能就不用导入到内存里了模块是什么一块python代码一组python代码一组C语言的代码一堆写好的 现成可以用的 函数、类以功能来分类的模块有哪几类内置模块 —— 随着python解释器的安装直接可以使用的模块扩展模块 —— 需要你自己安装一下才能使用的模块 django itchat自定义模块 —— 用户根据自己的需求完成的一组功能2.collect模块
2.1 可命名元祖
import collections
Point = collections.namedtuple('point',['x','y'])
p = Point(1,2)print(p)print(p.x)
print(p.y)from math import sqrt
sqrt(p.x**2 + p.y**2) # 程序会变得更明确,可读性更高3.time模块
import time
时间戳时间float —— 给机器看的
结构化时间 —— 中间的过渡格式化 %s —— 给人看的转换关系
timestamp = time.time()
print(timestamp)ts2 = 3000000000print(time.localtime())struct_time = time.localtime(ts2)
print(time.strftime('%m/%d/%Y %H:%M',struct_time))struct_time = time.strptime('2020','%Y')
print(time.mktime(struct_time))print(time.strptime('2020','%Y'))4.random模块
import random
# 0-9 数字
# 65-90 大写字母# 97-122 小写字母随机发红包代码示例:
def random_code(num,alpha=True):
import random code = '' for i in range(num): choice = str(random.randint(0,9)) if alpha: alpha_lower = chr(random.randint(65,90)) alpha_upper = chr(random.randint(97,122)) choice = random.choice([choice,alpha_lower,alpha_upper]) code += choice return codeprint(random_code(4,False))
5.sys模块
和python解释器打交道的
import sys
print('3.6' in sys.version)
print(sys.platform) # win32print(sys.path)
你的模块能不能被顺利的导入
取决于这个模块是否在你的sys.path路径中路径的寻找是依据sys.path列表中的顺序查找的找到一个符合条件的就停止了
print(sys.modules)
记载了我们已经导入的模块名以及这个模块的内存地址执行pthon命令的时候: python E:\s22\login.py alex 123
if len(sys.argv)>1 and sys.argv[1] == 'alex'and sys.argv[2] == 'alex3714':
print('登陆成功')else: user = input('user:') # 阻塞 pwd = input('pwd:') if user == 'alex' and pwd == 'alex3714': print('登陆成功')6.OS模块
os模块
操作系统打交道的import os
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cdos.curdir 返回当前目录: ('.')os.pardir 获取当前目录的父目录字符串名:('..')os.makedirs('dirname1/dirname2') 可生成多层递归目录os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirnameos.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirnameos.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印os.remove() 删除一个文件os.rename("oldname","newname") 重命名文件/目录os.stat('path/filename') 获取文件/目录信息os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'os.system("bash command") 运行shell命令,直接显示os.popen("bash command).read() 运行shell命令,获取执行结果os.environ 获取系统环境变量
os.path
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以/或\结尾,那么就会返回空值。 即os.path.split(path)的第二个元素os.path.exists(path) 如果path存在,返回True;如果path不存在,返回Falseos.path.isabs(path) 如果path是绝对路径,返回Trueos.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回Falseos.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回Falseos.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间os.path.getsize(path) 返回path的大小
7.re模块
正则表达式本身也和python没有什么关系,就是匹配字符串内容的一种规则。
在线测试工具
则 | 待匹配字符 | 匹配 结果 | 说明 |
[0123456789] | 8 | True | 在一个字符组里枚举合法的所有字符,字符组里的任意一个字符 和"待匹配字符"相同都视为可以匹配 |
[0123456789] | a | False | 由于字符组中没有"a"字符,所以不能匹配 |
[0-9] | 7 | True | 也可以用-表示范围,[0-9]就和[0123456789]是一个意思 |
[a-z] | s | True | 同样的如果要匹配所有的小写字母,直接用[a-z]就可以表示 |
[A-Z] | B | True | [A-Z]就表示所有的大写字母 |
[0-9a-fA-F] | e | True | 可以匹配数字,大小写形式的a~f,用来验证十六进制字符 |
字符:
元字符 | 匹配内容 |
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
\b | 匹配一个单词的结尾 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结尾 |
\W | 匹配非字母或数字或下划线 |
\D | 匹配非数字 |
\S | 匹配非空白符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[...] | 匹配字符组中的字符 |
[^...] | 匹配除了字符组中字符的所有字符 |
量词:
量词 | 用法说明 |
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |