python内置模块介绍(一)
本文主要介绍模块列表如下:
os模块
- os.getcwd() 获取当前工作目录
- os.chdir("/path/to") 将目录切换到/path/to目录,等价于shell中的cd命令
- os.makedirs('path1/path2') 创建多层目录(可以多层目录同时不存在),相当于shell中的mkdir -p 命令
- os.removedirs("path1/path2") 删除空目录,如果目录不空就会报错,首先删除path2目录,如果path1也变成空目录了,也会删除path1,知道所给目录的第一层(即示例中的path1)停止
- os.mkdir("path") 创建单层目录path,相当于shell中的mkdir,注:path目录所在的上一层目录必须已经存在
- os.rmdir("path") 删除单层目录path,相当于shell中的rmdir
- os.listdir("path") 列出指定目录下的所有文件和子目录,包括隐藏文件,返回值是列表
- os.remove("file") 删除单个文件
- os.rename("a","b") 重命名(文件或目录)
- os.stat("a") 获取a(文件或目录)的所有信息:返回值是一个os.stat_result类
- os.system("shell command") 运行shell命令,直接显示运行结果,返回值是程序执行成功的code,非shell运行结果的返回值,0代表成功,非0失败
os.path下方法
- os.path.abspath(path) 返回path的绝对路径
- os.path.realpath(path) 返回path的绝对路径,和abspath不同的是,如果path是一个连接,返回的是path所连接的绝对路径
- oa.path.split("path") 将path分割成目录和文件名,返回值是二元的元祖
- os.path.dirname("path") 返回path所在的目录
- os.path.basename("path") 返回path文件名
- os.path.exists("a") 如果a存在,返回True;如果a不存在,返回False;a可以是文件也可以是目录
- os.path.isabs("path") 如果path是绝对路径,返回True
- os.path.isfile("path") 如果path是一个存在的文件,返回True。否则返回False
- os.path.isdir("path") 如果path是一个存在的目录,则返回True。否则返回False
- os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
- os.path.getsize("a") 返回a的大小(如果a是文件,就是文件大小;如果a是目录,则是目录内inode列表所占空间,而不是目录内文件所占的空间大小;如果a是符号链接,是指链接文件的路径名的字节数)
- os.path.getatime("a") 返回a所指向的文件或者目录的最后访问时间
- os.path.gettime("a") 返回a所指向的文件或者目录的最后权限修改时间
- os.path.getmtime("a") 返回a所指向的文件或者目录的最后内容修改时间
没有小括号
- os.curdir 返回值是".",即当前目录的相对路径,注意:没有小括号
- os.pardir 返回值是"..", 即上一层目录的相对路径,注意:没有小括号
- os.sep 输出操作系统的路径分隔符,win下为"\\",Linux下为"/",没有小括号
- os.linesep 输出当前操作系统的行终止符,win下为"\t\n",Linux下为"\n",没有小括号
- os.pathsep 输出当前操作系统用于分割文件路径的字符串,没有小括号
- os.name 输出当前使用平台,win->'nt'; Linux->'posix'
- os.environ 获取系统环境变量,返回值是一个类,可以通过返回值的各种方法调用里面的值
sys模块
- sys.argv 命令行list数据,第一个元素是程序本身
- sys.exit(a) 退出程序,如果a是假则正常退出,如果真,则异常退出,并返回a(假可以是0,False,空字符串等;真则不是空的数据)
- sys.version 打印python解释程序的版本
- sys.path 返回模块的搜索路径,它对应的是一个list类型,可以通过list的方法进行修改
- sys.platform 返回操作系统的名称
- sys.stdout.write("a") 标准输出打印a(对应的还有stderr)
re模块
re模块的函数介绍
- re.match(pattern,string) 从头开始匹配
- re.search(pattern,string) 匹配(如果pattern增加了^,就和match功能一样)
- re.findall(pattern,string) 把所有匹配到的字符以 list形式 返回
- re.split(pattern,string) 将string按照pattern分割,返回列表,列表中的元素不包含pattern
- re.sub(pattern,replace,string) 将string中的pattern替换成replace
正则表达式符号含义
- "." 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
- "^" 匹配字符开头,若指定flags MULTILINE,这种(r"^a","\nabc\neee",flags=re.MULTILINE)也可以匹配上(不指定flags,"\nabc\neee"就是一行)
- "$" 匹配字符结尾,若指定flags MULTILINE,这种("foo$","bfoo\nsdfsf",flags=re.MULTILINE)也可以匹配上,同上
- "*" 匹配*号前的字符0次或多次
- "+" 匹配前一个字符1次或多次
- "?" 匹配前一个字符0次或1次
- "{m}" 匹配前一个字符m次
- "{m,n}" 匹配前一个字符m到n次(即最少m次,最多n次)
- "|" 匹配|左或|右的字符
- "(...)" 分组匹配,分组的顺序:从左到右,从外到内
- 分组还可以细分,普通分组,命名分组,后向引用,前向肯定断言,后向肯定断言,前向否定断言、后向否定断言
- 普通分组,则是通过1,2.....来获取匹配到信息,如re.search(r"(abc)","abcdefg").group(1)
- 命名分组,则是通过给分组命名来获取匹配到的信息,如
(?P<name>正则表达式),这里的命名就是name,通过groupdict("name")函数获取捕获值
- 其他用的不多
- [...] 匹配中扩内的人一个字符,如果中括号前加^(即[^]),代表匹配非中括号内任一个字符
- "\A" 只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
- "\Z" 匹配字符结尾,同$
- "\d" 匹配数字[0-9]
- "\D" 匹配非数字
- "\w" 匹配[A-Za-z0-9]
- "\W" 匹配非[A-Za-z0-9]
- "\s" 匹配空白字符、\t、\n、\r
- "\S" 匹配\s的补集
- \d和\D,\w和\W,\s和\S每一对都是对方的补集,一起可以组成全部的字符
time模块
- 在time模块中有3中标示时间的方式:1.时间戳,2.格式化的时间字符串,3.元祖(struct_time,有9个元素)
- UTC(Coordinated Universal Time,协调世界时),世界标准时间,中国是UTC+8;DST(Daylight Saving Time)夏令时
- 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日0:00:00开始按秒计算的量
- 元祖(struct_time)有9个元素,tm_year:年份,tm_mon:月,tm_mday:日期,tm_hour:小时,tm_min:分钟,tm_sec:秒,tm_wday:星期中的第几天(周一用0表示),tm_yday:一年中的第几天,tm_isdst:是否为夏令时
函数介绍
time中各种类型时间的转换,引用:https://blog.51cto.com/egon09/1840425
- time.time() 当前的时间,类型是时间戳(timestamp)
- time.sleep(timestamp) 程序睡眠,单位秒
- time.gmtime([timestamp]) 类型为struct_time;不传递参数,当前utc的时间;如果传递参数,则为从1970年1月1日0:00:00经过timestamp时间后的utc时间
- time.localtime([timestamp]) 类型为struct_time;不传参数,是当前本地的时间;如果传递参数,则为从1970年1月1日0:00:00经过timestamp时间后的本地时间
- time.asctime([struct_time]) 类型为字符串,格式为"'Wed Jul 17 08:40:40 2019'"”;不传递参数,解析当前时间;传递参数,解析参数时间
- time.ctime([timestamp]) 类型为字符串,格式为"'Wed Jul 17 08:40:40 2019'"”;不传递参数,解析当前时间;传递参数,解析参数时间(和上面不同给的是传递参数类型不同)
- time.strptime(string,format) 返回struct_time类型,将string按照format解析,format格式下面介绍
- time.strftime(format[,tuple] 返回字符串,将时间按照format形式转换为字符串格式,没有指定tuple time,则默认使用localtime
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00-59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示,返回和time.ctime一样
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称 # 乱码
- %% %号本身
datetime模块
- datetime.dateime.now() 返回当前时间,类型是 datetime.datetime,
- datetime.timedelta() 这个函数不单独使用,要配合now函数,对时间进行加减,比如:datetime.dateime.now() + datetime.timedelta(-3)
- timedelta的参数有:days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0
日期的函数还有calendar(日历)模块,详细见:https://docs.python.org/3/library/calendar.html
random模块
- random.random() 返回浮点型数字,区间为[0.0 1)---不包含1
- random.uniform(a,b) 返回浮点型数字,可自定义区间,[a,b)
- random.int(a,b) 返回整数,区间为[a,b]
- random.randrange(a,b) 返回整数,区间[a,b)区间性质和range函数一样
- random.choice(seq) 返回seq中的一个元素
- random.shuffle(x) 对x重新洗牌,即打乱顺序,x是一个列表
shutil模块shutil
高级的文件,文件夹处理
- shutil.copyfilebj(src,dst) 拷贝文件对象,src和dst必须是文件句柄(即open后的文件句柄)
- shutil.copyfile(src,dst) 拷贝文件,src和dst是文件名称(调用copyfilebj来实现的)
- shutil.copymode(src,dst) 拷贝文件权限,内容、组、用户均不变,src和dst都是文件,且必须存在
- shutil.copystat(src,dst) 拷贝文件的状态信息,包括mode,atime,ctime,flags等
- shutil.copy(src,dst) 拷贝文件和权限,src和dst都是文件
- shutil.copy2(src,dst) 拷贝文件和状态,src和dst都是文件
- shutil.copytree(src,dst) 递归拷贝文件
- shutil.rmtree(path) 递归删除文件
- shutil.move(src,dst) 递归移动文件
subprocess模块
直接运行推荐使用run方法,如果使用更高级的可以直接使用Popen接口;如果想得到程序运行结果,推荐使用getstatusoutput(cmd)
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)
- args:标示要执行的命令,必须是一个字符串,字符串参数需要是列表形式,如果shell参数这只为true,那么可以将参数和命令放到一个字符串中,因为它是通过系统的shell执行
- 比如:如果有参数,必须是["ls","-al"],没有参数可以写"ls";如果shell为True,可以写成“ls -a”
- stdin、stdout 和 stderr:子进程的标准输入、输出和错误。其值可以是 subprocess.PIPE、subprocess.DEVNULL、一个已经存在的文件描述符、已经打开的文件对象或者 None。subprocess.PIPE 表示为子进程创建新的管道。subprocess.DEVNULL 表示使用 os.devnull。默认使用的是 None,表示什么都不做。另外,stderr 可以合并到 stdout 里一起输出。
- timeout:设置命令超时时间。如果命令执行时间超时,子进程将被杀死,并弹出 TimeoutExpired 异常。
- check:如果该参数设置为 True,并且进程退出状态码不是 0,则弹 出 CalledProcessError 异常。
- encoding: 如果指定了该参数,则 stdin、stdout 和 stderr 可以接收字符串数据,并以该编码方式编码。否则只接收 bytes 类型的数据。
- shell:如果该参数为 True,将通过操作系统的 shell 执行指定的命令。
- args:标示要执行的命令,必须是一个字符串,字符串参数需要是列表形式,如果shell参数这只为true,那么可以将参数和命令放到一个字符串中,因为它是通过系统的shell执行
- subprocess.getstatusoutput(cmd) 返回值是一个二元元组,第一个是exitcode(0代表运行成功,其他代表失败),第二个是运行cmd返回的结果
- 类似的还有一个函数subprocess.getoutput(cmd) 只返回运行的结果
剩余部分请参考:python内置模块介绍(二)
python内置模块介绍(一)的更多相关文章
- python内置模块collections介绍
目录 python内置模块collections介绍 1.namedtuple 2.deque 3.defaultdict 4.OrderedDict 5.ChainMap 6.Counter 7.小 ...
- python内置模块(4)
这一部分是python内置模块系列的最后一部分,介绍了一些小巧有用的内置模块. 目录: 1.random 2.shelve 3.getpass 4.zipfile 5.tarfile 6.bisect ...
- python内置模块[re]
python内置模块[re] re模块: python的re模块(Regular Expression正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工 ...
- python 内置模块续(二)
目录 python 内置模块补充 1.hashlib模块 简易使用: 高级使用: 进阶使用: 加盐处理: 校验文件一致性 2.logging日志模块 日志等级 常用处理 "四大天王" ...
- 从零开始学Python第0周:Python基本介绍(部分内容来源于网络)
Python入门介绍 一,Python的基本介绍 (1)概要 Python是一种解释型,面向对象,动态数据类型的高级程序设计语言.常被广泛用于处理系统管理任务和web编程.现如今Python已经成为了 ...
- 【转】Python Twisted介绍
Python Twisted介绍 作者:Jessica McKellar 原文链接 Twisted是用Python实现的基于事件驱动的网络引擎框架.Twisted诞生于2000年初,在当时的网络游戏开 ...
- 【美妙的Python之中的一个】Python简单介绍及环境搭建
美妙的Python之Python简单介绍及安装 简而言之: Python 是能你无限惊喜的语言,与众不同. 1.Python: ...
- python模块介绍- multi-mechanize 性能测试工具
python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...
- python模块介绍- xlwt 创建xls文件(excel)
python模块介绍- xlwt 创建xls文件(excel) 2013-06-24磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 ...
随机推荐
- SpringBoot 配置Druid:不显示SQL监控 —(*) property for user to setup
题外话: SpringBoot整合Druid 请查看https://www.cnblogs.com/JealousGirl/p/druid.html Druid登录后数据源页面.SQL监控等不显示数据 ...
- OpenMP基本概念【转】
OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计.编译器根 ...
- Redux遵循的三个原则是什么?
(1)单一事实来源: 整个应用的状态存储在单个 store 中的对象/状态树里.单一状态树可以更容易地跟踪随时间的变化,并调试或检查应用程序. (2)状态是只读的: 改变状态的唯一方法是去触发一个动作 ...
- 什么是epistatic effects | 上位效应
epistatic与interaction之间的区别与联系? genetic上的interaction是如何定义的? Epistasis is the phenomenon where the eff ...
- [String]两个右补空格使字符串达到固定长度的函数 来自网上 请君自取
代码: package fixsizestring; public class TestClass { public static void main(String[] args) { for(int ...
- 【django学习】request.POST与request.POST.get两者主要区别
本文链接:https://blog.csdn.net/xun527/article/details/87777576request.POST是用来接收前端传过来的数据 一.request.POST.g ...
- RabbitMQ教程C#版 - 发布订阅
先决条件本教程假定 RabbitMQ 已经安装,并运行在localhost标准端口(5672).如果你使用不同的主机.端口或证书,则需要调整连接设置. 从哪里获得帮助如果您在阅读本教程时遇到困难,可以 ...
- 004 DOM01
一:说明 1.Js的三个部分 ECMAScripts标准:JS的基本语法 DOM:文档对象模型,操作页面的元素的 BOM:浏览器对象模型,操作浏览器 2.术语 文档:一个页面就是一个文档 元素:页面中 ...
- 【转载】 clusterdata-2011-2 谷歌集群数据分析(一)
原文地址: https://blog.csdn.net/yangss123/article/details/78298679 由于原文声明其原创文章不得允许不可转载,故这里没有转载其正文内容. --- ...
- 虚拟机的Vmtools
安装了虚拟机之后,文件共享不方便,安装VMTools可以在windows上直接拖文件到linux上. 安装方法: 1.进入linux把CD弹出 2.打开虚拟机之后 3.下载完成可以在linux的CD设 ...