python的一些内置模块
整理了几种python的常用内置模块.
内置函数思维导图:https://www.processon.com/view/link/5c7902b1e4b0168e4200846a
re模块
re(regular expression)就是正则表达式英文的缩写,也就是说python利用正则进行一些查找,替换等工作。
re模块的方法:
查找
findall,匹配所有,每一项都是列表中的一个元素,从大段地内容中找出匹配的项,常用指数5星,缺点是提取出来的数据量如果过大不能及时处理的话,浪费内存。
import re
ret = re.findall("\d+","sajdaijdi123124sad12")
print(ret) #['123124', '12']
search 主要用于表单验证,返回的是一个正则匹配的结果,只匹配从左到右的第一个。
import re
ret = re.search("\d+","sajdaijdi123124yfcy23423")
print(ret.group()) #123124
group的功能是把匹配结果显示出来,如果匹配失败,print(ret)是none,故group(ret)会报错.
match 从开头匹配,成功则返回,不成功返回none
import re
ret = re.search("[^\d]+","sjdakjdk123124")
print(ret.group()) #sjdakjdk
替换
sub(正则,要替换的,实施的字符串,替换次数)
subn()功能和sub没太大区别 ,就是能返回替换次数.
import re
s = "我很2,你也很2"
ret = re.sub("\d","帅",s,1) #如果不写次数,默认全部
print(ret) #我很帅,你也很2
分割
split, 和字符串时候使用的方法差不多.注意 被切割的地方会消失不见.
import re
s = "小刘和兄贵1小李和小梅"
ret = re.split("\d",s)5[
print(ret) #['小刘和兄贵', '小李和小梅']
进阶之compile
把正则表达式进行预编译,节省时间
import re
ret = re.compile("\d+")
res = ret.findall("jksajd123")
print(res) #["123"]
进阶之finditer
返回迭代器,可以通过for循环读取数据,节省空间.
import re
ret = re.finditer("\d+","sajdkajd123")
for i in ret:
print(i.group()) #123
在re中正则表达式的分组的使用
例如:在"<a>wuyuetian</a>"中取出"wuyuetian"
#在findall里,为了findall也能顺利取到分组中的内容,用()会优先取括号内的内容
import re
s = "<a>wuyuetian</a>"
ret = re.findall(">(\w+)<",s)
print(ret)
#分组的序号规则类似于索引,但是记着是从1开始的
s = "<a>wuyuetian</a>"
ret = re.search("(>)(\w+)(<)",s)
print(ret.group(2)) #wuyuetian
关于分组命名
?P<name>xxx
s = "<a>wuyuetian</a>"
ret = re.search(">(?<contrnt>\w)<",s)
print(ret.group(content)
time模块
time模块顾名思义,就是和时间相关的模块.
在python中时间分为以下几种:
1,格式化字符串类型时间 : 2018-08-20 或 2018.8.20等
2,结构化时间 : 元组类型 型如:time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=15, tm_min=11, tm_sec=34, tm_wday=0, tm_yday=232, tm_isdst=0)
3,时间戳 , 指的是一个浮点型数字,它代表了从伦敦时间1970年1月1日到现在经历了多少秒.
#结构化时间
print(time.localtime()) #time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=19, tm_min=11, tm_sec=34, tm_wday=0, tm_yday=232, tm_isdst=0)
print(time.localtime().tm_mon) # #格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S')) #2018-08-20 19:18:01 #时间戳
print(time.time()) #1534749546.5685184
time模块补充
上文提到的三种时间表示类型之间能够相互转换.
time.strptime() ==> time.mktime()
格式化时间 结构化时间 时间戳
time.strftime() <== time.localtime()
结构化时间作为枢纽的存在,实现时间表现类型的相互转换.
random模块
random是随机数模块,比较简单,方法也比较少.
random.randint() 取随机整数,包括左右边界
random.randrange() 取随机整数,不包括右边界. #既然是range 那肯定还有步长,左右的参数.
random.random() 取随机小数,0-1之间的小数
random.uniform() 取随机小数,以传入参数为范围
random.shuffle() 打乱传入的容器的内部顺序并返回
random.sample() 随机返回传入容器内的元素,可以修改参数修改随机的个数.
random.choice() 随机返回
import random print(random.random()) #0.626381041530784 print(random.randint(1,2)) #1或2 #注意: 这里必须要传参数 print(random.randrange(1,5,2)) #1或3 这里的randrange可以当成range理解 print(random.uniform(1,2)) #1.7422664388978308 lst = [1,2,3,4]
random.shuffle(l) #[3,1,4,2] #注意:这里是列表的顺序被打乱,打印lst才有结果 print(random.sample("",3)) #这里的第一个参数可以传多种容器类的数据类型,第二个参数代表了随机取出几个数 print(random.choice("")) #随机选择一个 返回,参数和sample的第一个参数性质一样
sys模块
sys模块是和python解释器进行交互的接口,较为容易理解.
sys.argv() 这个算是用的比较多的一个方法了,list,返回的第一个元素是程序本身的路径,之后的 就是运行程序是输入的内容.多用于用户交互.
sys.version 返回解释器的版本信息.
sys.exit() 正确退出exit(0),异常退出exit(1)
sys.path 返回模块的搜索路径
sys.modules() 返回我们所导入的模块的内存地址,可以当模块名使用.
sys.getcheckintval() 查看GIL的切换的指令数.
sys.setrecursionlimit() 查看并能更改递归的最大次数.
sys.studin() 获取标准输入
sys.studout 获取标准输出
import sys
a = sys.argv(1)
if a =="有点小帅":
print("谢谢")
#命令行输入 python (路径) ,"有点小帅"
#返回 "谢谢" sys.version #3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] sys.path() #一个路径 print(sys.modules["time"].time()) #1534754176.2376733 没错 返回的是时间戳
import sys #关于exit()异常处理
try: sys.exit(1) except SystemExit as e: print(e) #
getopt模块
getopt模块大家可能见到的比较少,在网上各式各样的解释也让人眼花缭乱,这里说一下我的理解。
getopt模块有两个方法,这里主要介绍getopt.getopt()。它的作用其实两个字就能说明:匹配。
getopt.getopt会返回匹配到的命令行参数和参数值组成的元组。
有三个参数:
1,命令行参数,我们可以通过sys.argv[1:]来获取,把路径元素跳过。
2,短参数的匹配规则。短参数就是 -h,-l,-v这种的,加上 `:`就代表":"左右两边的参数有值。
3,长参数的匹配规则,长参数就是-help,-version,-command这种,加上`=`就代表该参数有值。
有两个返回值:
1,匹配到的命令行参数及其值 组成的元组 构成的列表。
2,未匹配到的命令行参数。
示例代码:

输出结果:

os模块
os模块是和操作系统相关的一个模块.是和操作系统进行交互的接口.
os.popen() 和 os.system() 都是执行字符串类型的操作系统命令,可以类比eval和exec这两个内置函数,这两个内置函数是执行字符串类型的python代码
os.popen()适合做查看类的工作,如查看"cat"
os.system适合做直接执行不需返回的操作,如删除"rm"
os.getcwd() 打印当前工作目录
os.chdir() 切换当前的工作目录
os.makedirs() 递归创建多个文件夹(空)
os.removedirs() 递归删除多个文件夹(空)
os.mkdir() 创建一个文件夹
os.rmdir() 删除一个文件夹
os.listdir() 列出指定目录下所有的文件和文件夹
os.remove() 删除一个文件
os.rename]() 重命名一个文件
os.stat() 获取信息 #注:os.stat().st_size获取文件大小
os.path.abspath() 它有两个功能,把不规范的路径格式修改成操作系统默认的格式
能够给能够找到的相对路径修改成绝对路径
os.path.split() 把文件路径分为两段,第二段是一个文件或者文件夹 返回的是一个元组
os.path.dirname() 返回目录
os.path.basename 返回文件名 这两个就是os.path.split()的返回值 都是字符串
os.path.exists() 判断文件或者文件夹是否存在
os.path.isabs() 判断是否为绝对路径
os.path.isdir() 判断是否为文件夹
os.path.isfile() 判断是否为文件
os.path.join("","") 拼接
os.path.getatime() 返回文件最后的修改时间
os.path.getsize() 查看文件的大小
注意: 所有的文件夹至少是4096个字节,创建文件夹是64个字节无法用python统计一个文件夹中所有文件的大小
pickle和json序列化模块
pickle和json都是具有dump,load,jumps,loads
都是类型转换,但是json更具有局限性,它不能处理集合,字典的key也必须是字符串,等等
pickle就没这些局限性,并且json的jump和load不能做到连续多次序列化和反序列化.
注意 由于pickle返回的结果是字节,在用dump和load进行文件操作时,要用rb和wb模式打开文件.
uuid模块
uuid.uuid4() 返回随机的五组由数字和字母组成的UUID类型的语句,如a8d04eea-191a-4cdc-b4de-0c71f9c463cf , 可以被str强转.
subprocess模块
subprocess模块主要是用来执行外部命令的模块,
1,subprocess.call(),执行命令,并返回执行状态,其中shell参数为False时,命令需要通过列表的方式传入,当shell为True时,可直接传入命令。
2,subprocess.check_call(),增加当返回值不为0时,直接抛出异常。。
3,subprocess.check_output(),它会做两件事:
· 检查返回值,如果不为0则代表当前进程执行失败。
· 返回标准输出结果
python的一些内置模块的更多相关文章
- Python 入门之 内置模块 --logging模块
Python 入门之 内置模块 --logging模块 1.logging -- 日志 (1)日志的作用: <1> 记录用户信息 <2> 记录个人流水 <3> 记录 ...
- Python 入门之 内置模块 -- re模块
Python 入门之 内置模块 -- re模块 1.re 模块 (1)什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类 ...
- Python 入门之 内置模块 -- collections模块
Python 入门之 内置模块 -- collections模块 1.collections -- 基于Python自带的数据类型之上额外增加的几个数据类型 from collections 在内 ...
- Python 入门之 内置模块 -- hashlib模块
Python 入门之 内置模块 -- hashlib模块 1.hashlib 摘要算法,加密算法 (1)主要用途: <1> 加密 : md5 sha1 sha256 sha512 md5, ...
- Python 入门之 内置模块 -- sys模块
Python 入门之 内置模块 -- sys模块 1.sys模块 sys模块是与python解释器交互的一个接口 print(sys.path) #模块查找的顺序 print(sys.argv) # ...
- Python 入门之 内置模块 -- os模块
Python 入门之 内置模块 -- os模块 1.os os是和操作系统做交互,给操作发指令 os模块是与操作系统交互的一个接口,它提供的功能多与工作目录,路径,文件等相关 (1)工作路径 prin ...
- Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)
Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: json模块 : 不同语言都遵循的一种数据转化格式,即不同 ...
- Python 入门之 内置模块 -- random模块
Python 入门之 内置模块 -- random模块 1.random模块 import random # random -- 随机数 (1)选择1-50之间随机的整数 print(random.r ...
- Python 入门之 内置模块 -- datetime模块
Python 入门之 内置模块 -- datetime模块 1.datetime模块 from datetime import datetime (1)datetime.now() 获取当前时间和日期 ...
随机推荐
- expdp错误案例
转自:https://www.cnblogs.com/kerrycode/p/3960328.html Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例,下面总结一 ...
- 与我们息息相关的internet服务(3)---电子邮件服务
几年前了解了一下,现在再实施的时候,再了解,当然如果要到牛人张小龙28岁时的开发程度,可能还差一个筋斗云 在起步一个公司,从组建的技术上,可能要准备很多东西,其中一个就是我们熟悉的企业邮箱. 伊妹儿, ...
- 与http协作的web服务器--代理、网关、隧道
一台服务器可以搭建多个web站点 代理: 接受客户端发送的请求,转发给其他服务器,然后接受服务器的返回结果(响应)再返回给客户端.每次经过代理服务器,就会追加写入via首部信息. 按两种基准分类.一种 ...
- 洛谷P1064--金明的预算方案(简单背包)
https://www.luogu.org/problemnew/show/P1064 #include<iostream> #include<algorithm> #incl ...
- ACM计划
原文 :http://027xbc.blog.163.com/blog/static/128159658201141371343475/ ACM主要是考算法的,主要时间是花在思考算法上,不是花在写程序 ...
- 网易云通过KCSP认证,云原生技术实力再获认可
近日,网易云通过KCSP认证,正式成为CNCF官方认可的Kubernetes服务提供商,也标志着网易云在云原生领域的技术实力得到了业界认可. Kubernetes是第一个从CNCF毕业的开源项目,凭借 ...
- Akka-CQRS(1)- Write-side, Persisting event sources:CQRS存写端操作方式
上篇我们提到CQRS是一种读写分离式高并发.大流量数据录入体系,其中存写部分是通过event-sourcing+akka-persistence实现的.也可以这样理解:event-sourcing(事 ...
- Xftp5软件使用详解
一.首先运行Xftp5,然后导航栏上面有个小加号,点击进去. 二.接着出现如下界面,在这里填写名称(这个随意填写),主机填写要连接的主机的IP地址,然后协议的话,Linux系统一般选择SFTP协议,端 ...
- Javascript高级编程学习笔记(27)—— BOM(1)window对象1
ECMAScript是JS的核心 但是对于在浏览器中运行的JS,BOM显然才是真正的核心 我们知道JS是由三个部分组成的 BOM.DOM.ECMAScript 之前的文章我们主要介绍的是ECMAScr ...
- Shiro基础
Factory<T>接口(org.apache.shiro.util.Factory) 接口的getInstance()方法是泛型方法,可以用来创建SecurityManager接口对象 ...