导图社区 python模块分类知识总结
Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。
编辑于2022-06-13 10:05:26python模块
A. 文本处理
一、 string字符串操作模块
二、 re正则表达式模块
B. 数字与数学
一、 decimal十进制定点和浮点运算模块
二、 math数学方法模块
三、 random生成伪随机数模块
C. 日期与时间
一、 calendar日历相关函数模块
二、 datetime日期时间模块
三、 time时间模块
D. 文件与系统
一、 os文件与系统操作模块
二、 os.path常见路径操作模块
三、 shutil高级文件操作模块
四、 sys系统相关的属性和方法模块
E. 文件格式
一、 csv高效处理CSV文件模块
二、 json JSON编码和解码器模块
string字符串操作
常量
string.ascii_letters 常量用于返回所有小写字母(a~z)和所有大写字母(A~Z)
string.ascii_lowercase 常量用于返回所有小写字母(a~z)
string.ascii_uppercase 常量用于返回所有大写字母(A~Z)
string.digits 常量用于返回十进制数字字符串(0~9),即“0123456789”
string.hexdigits 常量用于返回十六进制数字字符串(0~9、a~f、A~F)
string.octdigits 常量用于返回八进制数字字符串(0~7)
string.punctuation 常量用于获取在Python语言中被视为标点符号的ASCII字符组成的字符串
string.printable 常量用于获取在Python语言中被视为标点符号的ASCII字符组成的字符串
string.whitespace 常量返回被 Python 视为空白字符并由 ASCII 字符组成的字符串,其中包括空格符、制表符、换行符、回车符等
方法
capwords() 方法用于将单词首字母转换为大写。语法格式如下: string.capwords(s, sep=None) 参数说明: l s :必选参数,用于指定要转换的字符串。 l sep :可选参数,为空或为 None,多个空格会被一个空格代替,字符串开头和结尾的空格将会被移除;另外,sep 这个参数是用来分割和组合字符串的。 l 返回值:返回转换后的字符串。
formatter类
format()方法是formatter类中的主要方法,它的参数是一个需要格式化的目标字符串,和一组需要填充目标字符串的序列,例如,字典和元组 format(format_string, *args, **kwargs) 参数说明: l format_string :表示需要格式化的目标字符串。 l *args :表示填充目标字符串的序列,是字典或元组。 l **kwargs :关键字参数。 l 返回值:返回格式化后的字符串。 实例: import string formatter = string.Formatter() s1='${:.2f}' # 添加美元符号,小数保留两位 s2='¥{:,.2f}' # 添加人民币符号,用千位分隔符进行区分 s3='£{:,.2f}' # 添加英镑符号,用千位分隔符进行区分 s4='€{:.2f}' # 添加欧元符号,保留两位小数 print(formatter.format(s1,0.88)) print(formatter.format(s2,888800)) print(formatter.format(s3,123567)) print(formatter.format(s4,123567)) 结果: $0.88 ¥888,800.00 £123,567.00 €123567.00
re模块
模块介绍
在处理字符串时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码
1. 定位符——描述字符的边界
^ 匹配字符串的开始 $ 匹配字符串的结尾 \b 匹配一个单词的边界,单词的分解符通常是空格、标点符号或者换行 \B 匹配单词非边界
2. 预定义字符集—元字符 —标准字符转义序列
\w 匹配字母、数字、下划线或汉字 \W 匹配除字母、数字、下划线或汉字以外的字符 \s 匹配单个的空白符(包括【Tab】键和换行符) \S 匹配除单个空白符(包括【Tab】键和换行符)以外的所有字符 \d 匹配数字 \D 匹配任意非数字
3. 通配符——匹配非预定义字符集合
在正则表达式中,提供了一个通配符——英文状态下输入的“.”,用于匹配除“\r”和“\n”以外的任意单个字符。
4. 字符类
正则表达式查找数字和字母是很简单的,因为已经有了对应这些字符集合的元字符(如“\d”“\w”),但是如果要匹配没有预定义元字符的字符集合(比如元音字母 a, e, i, o, u ),应该怎么办? 很简单,只需要在方括号里列出它们就行了,像[aeiou]可以匹配任何一个英文元音字母,[.?!] 匹配标点符号(“.”“?”或“!”)。也可以轻松地指定一个字符范围,像“[0-9]”代表的含义与“\d”就是完全一致的:一位数字;同理,“[a-z0-9A-Z_]”完全等同于“\w”(如果只考虑英文的话)。 说明:要想匹配给定字符串中任意一个汉字,可以使用“[\u4e00-\u9fa5]”;如果要匹配连续多个汉字,可以使用“[\u4e00-\u9fa5]+”。
5. 限定符——限定匹配次数
? 匹配前面的字符零次或一次 + 匹配前面的字符一次或多次 * 匹配前面的字符零次或多次 {n} 匹配前面的字符 n 次 {n,} 匹配前面的字符最少 n 次 {n,m} 匹配前面的字符最少n次,最多 m 次
6. 管道符——“或”操作
正则表达式中提供了管道符,即“或”操作符,用于匹配两个或者多个正则表达式中的一个。例如,A|B,其中 A 和 B 都是正则表达式,在匹配时,从左到右进行匹配,当一个样式完全匹配时,另一个就不再匹配。即如果 A 匹配成功,则 B 就不再匹配。 |
7. 子模式——分组
子模式也就是分组的意思,使用小括号可以对正则表达式进行分组。如 (\.[0-9]{1,3}){3},就是对分组 (\.[0-9]{1,3}) 进行重复操作。
8. 转义字符
正则表达式中的转义字符(\)和 Python 中的大同小异,都是将特殊字符(如“.”“?”“\”等)变为普通字符。
9. 可选标志修饰符— —控制匹配方式
在使用 re 模块提供的方法时,经常需要指定一个 flags 参数,该参数为标志修饰符,是一个可选参数。通过它可以指定是否区分字母大小写、多行匹配等。
标志 说明 A 或 ASCII 对于 \w、\W、\b、\B、\d、\D、\s 和 \S 只进行 ASCII 码匹配(仅适用于 Python 3.x) DEBUG 显示编译时的 debug 信息,没有内联标记 I或IGNORECASE 执行不区分字母大小写的匹配 L 或 LOCALE 使用当前预定字符类 \w\W\b\B\s\S 取决于当前区域设定(不常用) M或 MULTILINE 将^和$ 用于包括整个字符串的开始和结尾的每一行(默认情况下,仅适用于整个字符串的开始和结尾处) S 或 DOTALL 使用“.”字符匹配所有字符,包括换行符 X 或 VERBOSE 忽略模式字符串中未转义的空格和注释 U 或 UNICODE 使用 Unicode 字符类 \w\W\b\B\s\S\d\D 取决于 unicode 定义的字符属性 ( 不常用 )
方法
match() 方法用于从字符串的开始处进行匹配,如果在起始位置匹配成功,则返回 Match 对象,否则返回 None。语法格式如下: re.match(pattern,string,flags=0) 参数说明: l pattern :表示模式字符串,由要匹配的正则表达式转换而来。 l string :表示要匹配的字符串。 l flags :可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。 l 返回值:如果 string 的开始处有 0 或多个字符匹配到了正则表达式样式,就返回一个相应的Match 对象
f indall()方法——搜索所有符合正则表达式的字符串 findall() 方法用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回。如果匹配成功,则返回包含匹配结构的列表,否则返回空列表。语法格式如下: re.findall(pattern, string, flags=0) 参数说明: l pattern :表示模式字符串,由要匹配的正则表达式转换而来。decimal l string :表示要匹配的字符串。 l flags :可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。 l 返回值:返回一个符合表达式匹配结果的列表。
fullmatch() 方法用于对整个字符串进行匹配,如果整个字符串匹配到正则表达式样式,就返回一个相应的匹配对象,否则就返回一个 None。语法格式如下: re.fullmatch(pattern,string,flags=0) 参数说明: l pattern :表示模式字符串,由要匹配的正则表达式转换而来。 l string :表示要匹配的字符串。 l flags :可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。 l 返回值:如果整个 string 匹配到正则表达式样式,就返回一个相应的 Match 对象。
split() 方法用于实现根据正则表达式分割字符串,并以列表的形式返回。其作用同字符串对象的 split() 方法类似,所不同的就是分割字符由模式字符串指定。语法格式如下: re.split(pattern,string,maxsplit=0,flags=0) 参数说明: l pattern :表示模式字符串,由要匹配的正则表达式转换而来。 l string :表示要匹配的字符串。 l maxsplit :可选参数,表示最大的拆分次数。 l flags :可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。 l 返回值:返回一个分割后的字符串列表。
sub() 方法用于实现字符串替换。语法格式如下: re.sub(pattern,repl,string,count=0,flags=0) 参数说明: l pattern :表示模式字符串,由要匹配的正则表达式转换而来。 l repl :表示替换的字符串。 l string :表示要被查找替换的原始字符串。 l count :可选参数,表示模式匹配后替换的最大次数,默认值为 0,表示替换所有的匹配。 l flags :可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。 l 返回值:返回替换后的字符串。
decimal
decimal 模块是 Python 提供的用于进行十进制定点和浮点运算的内置模块。使用它可以快速正确地进行十进制定点和浮点数的舍入运算,并且可以控制有效数字的个数。
使用 decimal 模块主要是因为它与 Python 自带的浮点数相比,有以下优点 : l 基于浮点模型,提供与数字计算相同的一些方法。 l 可以准确表示十进制浮点数字。而 Python 自带的浮点数,对于小数的表示并不精确,例如,1.1+2.2 的结果为 3.3000000000000003,这显然不是我们需要的。 l decimal 模块可以保留尾随零。例如,使用 Python 自带的浮点数运算时,1.10+1.20=2.3,而使用 decimal 模块则可以得到 2.30 的结果。 l 使用 decimal 模块时,用户可以更改精度(默认为 28 位)。 l 综合以上优点,在需要进行精确计算时,建议采用 decimal 模块。
amth
常量
math.e 常量用于获取自然对数的底。 返回值:2.718281828459045
math.pi 常量用于获取圆周率。 返回值:3.141592653589793
math.tau 常量用于获取圆的周长与半径之比
数论与表示
特殊函数
fabs() 方法用于获取指定数值的绝对值。语法格式如下: math.fabs(x) 参数说明: l x :指定的数值。 l 返回值:返回 x 的绝对值。
fsum() 方法用于对迭代器里的每个元素进行求和。其功能与内置方法 sum() 相同,但是 fsum()方法更精确。语法格式如下: math.fsum(iterable)decimal 参数说明: l iterable :表示可迭代对象。 l 返回值:返回迭代器中元素之和。
fmod() 方法用于获取两个数值的余数,返回值类型为浮点数。语法格式如下: math.fmod(x,y)decimal 参数说明: l x :表示被除数。 l y :表示除数。 l 返回值:返回 x/y 的余数,返回值类型为浮点数。
pow(x,y) 方法用于获取 x 的 y 次幂。语法格式如下: math.pow(x,y) 参数说明: l x :表示底数。 l y :表示幂指数。 l 返回值:返回 x 的 y 次幂,即 x**y。
factorial() 方法用于获取指定数值的阶乘值。语法格式如下: math.factorial(x) 参数说明: l x :表示需要指定的数值。 l 返回值:返回 x 的阶乘值。
floor() 方法用于获取指定数值的下舍整数。语法格式如下: math.floor(x) 参数说明: l x :表示指定的数值。 l 返回值:返回指定数值 x 的下舍整数。
三角函数
幂函数与对数函数
角度转换
双曲函数
math 模块中提供了关于复杂浮点数学运算的函数,比如对数函数、幂函数、三角函数、角度转换、双曲函数等。
random
random 模块用于实现各种分布的伪随机数生成器,可以根据不同的实数分布来随机生成值,如随机生成指定范围的整数、浮点数、序列等。该模块中的多数函数都取决于 random() 函数,该函数通过 Mersenne Twister 作为核心生成器在 [0.0,1.0) 区间范围内均匀生成随机浮点数。
分布
betavariate() 方法用于以 beta 分布的概率分布返回 0 到 1 之间的随机数。语法格式如下: random.betavariate(alpha, beta) 参数说明: l alpha、beta :要求 alpha >0,beta > 0。 l 返回值:返回介于 0~1 之间的随机数。
random() 方法用于获取 0.0~1.0 范围内随机浮点数。语法格式如下: random.random() 参数说明: l 返回值:返回 0.0~1.0 之间的随机浮点数
uniform() 方法用于获取指定范围之间的随机浮点数。语法格式如下: random.uniform(a,b) 参数说明: l a :表示指定随机范围的起始值,该值可能会出现在结果中。 l b :表示指定随机范围的结束值,该值可能会出现在结果中。 l 返回值:返回一个 a~b 之间随机出现的浮点数。
整数
randint() 方法用于获取指定范围的随机整数。语法格式如下: random.randint(a,b) 参数说明: l a :表示随机整数范围的起始值。 l b :表示随机整数范围的结束值,随机出现的整数包含 b 参数。 l 返回值:返回指定范围的随机整数。
randrange() 方法用于获取指定范围的随机整数。语法格式如下: random.randrange(stop) random.randrange(start, stop[,step]) 参数说明: l stop :在没有指定 start 参数时表示 0 至 stop 之间的一个随机整数,其中不包含 stop 指定的值。 l start :表示随机范围的起始值。指定该参数后,stop 参数将作为随机范围的结束值。 l step :表示步长。 l 返回值:返回指定范围的随机整数。
序列
choice() 方法用于从非空序列中返回一个随机元素。语法格式如下: random.choice(seq) 参数说明: l seq :表示需要随机抽取的序列。 l 返回值:从非空序列中返回一个随机元素。
choices() 方法是 Python3.6 版本中新增的方法,是 choice() 方法的升级版。语法格式如下: random.choices(population, weights=None, *, cum_weights=None, k=1) 参数说明: l population :表示集群中随机抽取 K 个元素。 l weights :表示相对权重列表。 l cum_weights :表示累计权重,该参数与 weights 参数不能同时存在。 l 返回值:返回序列的随机元素。
shuffle() 方法用于将指定序列中的元素顺序随机排列,只针对可变序列。语法格式如下: random.shuffle(x[,random]) 参数说明: l x :表示需要随机排列元素的序列。 l random :可选参数,返回 [0.0,1.0) 中的随机浮点,默认情况下,该参数为 random() 方法。
sample() 方法用于从序列中随机抽取指定数量且不重复的元素所形成的新序列,可处理不可变序列。语法格式如下: random.sample(population,k) 参数说明: l population :表示需要抽取的可变序列或不可变序列。 l k :表示抽取元素的个数。 l 返回值:返回在指定序列中抽取指定数量且不重复元素所形成的新序列。
初始化
calendar
calendar 模块(日历模块)的方法都是与日历相关的,例如生成指定年份的日历、判断指定年份是否为闰年等。默认情况下,这些日历把星期一当作一周的第一天,星期天为一周的最后一天(按照欧洲惯例)。可以使用 setfirstweekday() 方法设置一周的第一天为星期天(6)或者其它任意一天。此外,calendar 模块中的 TextCalendar 和 HTMLCalendar 类可以输出指定格式的文本与 HTML 代码。
属性
day_name 属性用于获取周一至周日英文名称组成的数组。语法格式如下: calendar.day_name 参数说明: l 返回值:返回一个数组,内容为字符型周一至周日的英文名称。
day_abbr 属性用于获取周一至周日英文缩写组成的数组。语法格式如下: calendar.day_abbr 参数说明: l 返回值:返回一个数组,内容为字符型周一至周日的英文缩写。
month_name 属性用于获取一年中每个月份的英文名称组成的数组。语法格式如下: calendar.month_name 参数说明: l 返回值:返回一个数组,其内容为当前语言环境内一年中每个月份的英文名称。为了遵循 1月份对应数组索引为 1,该数组中第一个元素为空字符串,数组长度为 13。
month_abbr 属性用于获取一年中每个月份的英文缩写组成的数组。语法格式如下:decimal calendar.month_abbr 参数说明: l 返回值:返回一个数组,其内容为当前语言环境内一年中每个月份的英文缩写。为了遵循 1月份对应数组索引为 1,该数组中第一个元素为空字符串,数组长度为 13。
方法
calendar() 方法用于获取指定年份的日历。语法格式如下: calendar.calendar(year,w=2,l=1,c=6,m=3) 参数说明: l year :指定年份。 l w :表示每日之间的宽度间隔,默认为 2,最小宽度为 2。 l l :表示日期之间的行高度,默认为 1,至少占 1 行的高度。 l c :表示月份之间的间隔宽度,默认为 6,最小宽度为 2。 l m :表示一行显示几个月。 l 返回值:以多行字符串格式返回指定年份的日历。
isleap() 方法用于判断指定年份是否为闰年。语法格式如下: calendar.isleap(year) 参数说明: l year :指定年份。 l 返回值:布尔值,是闰年返回 True,否则返回 False。
month() 方法用于获取指定月份的日历。语法格式如下: calendar.month(year,month,w=0,l=0) 参数说明: l year :指定年份。 l month :指定月份。 l w :表示每日之间的宽度间隔,默认为 0,最小宽度为 2。 l l :表示日期之间的行高度,默认为 0,至少占 1 行的高度。 l 返回值:指定月份的日历。
prcal() 方法相当于 calendar() 方法,用于获取指定年份的日历。语法格式如下: calendar.prcal(year,w=0,l=0,c=6,m=3) 参数说明:decimal l year :指定年份。 l w :表示每日之间的宽度间隔,默认为 0,最小宽度为 2。 l l :表示日期之间的行高度,默认为 0,至少占 1 行的高度。 l c :表示月份之间的间隔宽度,默认为 6,最小宽度为 2。 l m :表示一行显示几个月。 l 返回值:以多行字符串格式返回指定年份的日历。
prmonth() 方法用于获取指定月份的日历,相当于 month() 方法。语法格式如下: calendar.prmonth(year,month,w=0,l=0) 参数说明: l year :指定年份。 l month :指定月份。 l w :表示每日之间的宽度间隔,默认为 0,最小宽度为 2。 l l :表示日期之间的行高度,默认为 0,至少占 1 行的高度。 l 返回值:返回指定月份的日历。
calendar类
htmlcalendar类
textcalendar类
datetime
常量
datetime 模块提供两个常量MINYEAR 与MAXYEAR,分别用于表示date 或者datetime 对象所允许的最小年份与最大年份。语法格式如下: datetime.MINYEAR datetime.MAXYEAR 参数说明: l 返回值:MINYEAR常量的返回值为1,MAXYEAR 常量的返回值为9999。
date类
datetime 模块中提供了多种操作日期和时间的类,还提供了一系列由简单到复杂的日期时间处理方法,可以实现以各种不同方式创建和输出日期与时间信息。另外,本模块中还包含对时区及夏令时信息的处理方法。
datetime.date 类由year、month 及day 构成。datetime.date 类的定义如下: datetime.date(year,month,day) 参数说明: l year :必须参数,年,取值范围:[1, 9999]。 l month:必须参数,月,取值范围:[1, 12]。 l day :必须参数,一月中第几天,取值范围:[1, 指定年份的月份中的天数],最大值根据给定的year 和month 参数来决定。 l 返回值:返回year-month-day格式的日期对象。 说明:如果我们传递的参数超出取值范围,会抛出ValueError 异常。
date 类中的fromtimestamp() 方法用于获取指定时间戳对应的date 对象。语法格式如下: date.fromtimestamp(timestamp) 参数说明: l timestamp:指定的时间戳。 l 返回值:返回指定时间戳对应的date 对象。
date 类中的fromtimestamp() 方法用于获取指定时间戳对应的date 对象。语法格式如下: date.fromtimestamp(timestamp) 参数说明: l timestamp:指定的时间戳。 l 返回值:返回指定时间戳对应的date 对象。
date 类中的isocalendar() 方法用于根据指定的日期对象获取对应的年份、周数、星期数所组成的元组。语法格式如下: date对象名.isocalendar() 参数说明: l 返回值:根据指定的日期对象返回对应的年份、周数、星期数所组成的元组。
date 类中的today() 方法用于返回当前的本地日期,相当于date.fromtimestamp(time.time())。语法格式如下: date.today() 参数说明: l 返回值:返回当前的本地日期。
date 类中的weekday() 方法用于获取指定日期对象的星期码,星期一为0,星期日为6。语法格式如下: date对象名.weekday() 参数说明: l 返回值:返回指定日期对象的星期码,星期一为0,星期日为6。
datetime类
datetime 类可以看作是date 类和time 类的合体,其大部分的方法和属性都继承于这两个类,其数据构成也是由这两个类的所有属性组成的,datetime.datetime 类的定义如下: datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0,tzinfo=None, *, fold=0) 参数说明: l year :必须参数,表示年,取值范围:[MINYEAR, MAXYEAR],即[1, 9999]。 l month:必须参数,表示月,取值范围:[1, 12]。 l day :必须参数,表示一月中第几天,取值范围:[1, 指定年份的月份中的天数],最大值根据给定的year 和month 参数来决定。 l hour :必须参数,表示小时,取值范围为[0, 23]。 l minute:可选参数,表示分钟,取值范围为[0, 59]。 l second:可选参数,表示秒,取值范围为[0, 59]。 l microsecond:可选参数,表示微秒,取值范围为[0, 999999]。 l tzinfo :可选参数,表示时区的相关信息,tzinfo 为子类对象(如timezone类)的实例。 l fold :值为0 或1,默认为0。 说明:如果设定的值超过datetime.datetime 类参数的取值范围,就会引起ValueError 异常。
datetime 类中的isoweekday() 方法用于返回指定日期在一周内的序号,其中周一表示为1,周日表示为7。语法格式如下: datetime对象名.isoweekday() 参数说明: l 返回值:返回对象名指定日期在一周内的序号,其中周一表示为1,周日表示为7。
datetime 类中的now() 方法用于返回一个表示当前本地时间的datetime 对象。语法格式如下: datetime.now(tz=None) 参数说明: l tz:可选参数。如果提供了参数tz,则获取tz 所指时区的本地时间;如果不指定参数tz 或参数tz 为None,则结果和datetime.today() 结果相同。 l 返回值:返回一个表示当前本地日期时间的datetime对象。
datetime 类中的today() 方法用于返回一个表示当前本地日期时间的datetime 对象。语法格式如下: datetime.today() 参数说明: l 返回值:返回一个表示当前本地日期时间的datetime对象。
time类
time 类由hour、minute、second、microsecond 和tzinfo 五部分组成,time 类的定义如下: datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0) 参数说明: l hour :必须参数,表示小时,取值范围:[0, 23]。 l minute:可选参数,表示分钟,取值范围:[0, 59]。 l second:可选参数,表示秒,取值范围:[0, 59]。 l microsecond:可选参数,表示微秒,取值范围:[0, 999999]。 l tzinfo :可选参数,表示时区的相关信息,tzinfo 为子类对象(如timezone类)的实例。 l fold :值为0 或1,默认为0。 说明:如果我们传递的参数超出取值范围,会抛出ValueError 异常。
time 类中的isoformat() 方法用于返回一个“HH:MM:SS.%f”格式的时间字符串。语法格式如下: time对象名.isoformat(timespec='auto') 参数说明: l timespec:可选参数,默认值为auto。它可以设置为以下值: Ø auto :表示如果microsecond 为0,则与second 相同,否则与microsecond 相同。 Ø hours :表示格式为HH,说明只显示小时。 Ø minutes :表示格式为 HH:MM,说明只显示小时和分钟。 Ø seconds :表示格式为 HH:MM:SS,说明只显示小时、分钟与秒。 Ø milliseconds :表示时间格式为HH:MM:SS.sss,不会显示微秒。 Ø microseconds :表示时间格式为HH:MM:SS.ffffff,完整的时间格式。 l 返回值:返回一个“HH:MM:SS.%f”格式的时间字符串。
time
常量
时间戳
time 模块中的time() 方法用于返回当前时间的时间戳。语法格式如下: time.time() 参数说明: l 返回值:返回当前时间的时间戳。
时间元组
在Python 中,使用9 个元素组成的元组来处理时间,我们称之为时间元组(struct_time 元组)。时间元组中9 个元素分别为:年、月、日、时、分、秒、一周中的第几日、一年中的第几日、夏令时。 导入time 模块,然后通过time 模块调用localtime() 方法获取当地时间的时间元组, import time # 导入time模块 print(time.localtime()) # 接收时间戳并返回当地时间的时间元组
strptime() 方法用于根据指定的格式把一个时间字符串转为时间元组,语法格式如下: time.strptime(string[,format]) 参数说明: l string:表示时间字符串。 l format :表示时间字符串所对应的格式,格式符号参考表2。 l 返回值:返回struct_time对象。
格式化时间字符串
import time # 导入time模块 print(time.strftime('%Y-%m-%d %H:%M:%S')) # 打印年-月-日 时:分:秒import time
其他方法
ctime() 方法用于以时间戳为参数,返回一个字符串。语法格式如下: time.ctime([secs]) 参数说明: l secs:要转换为字符串时间的秒数。如果没有参数或参数为None,将默认以time.time() 方法的时间戳作为参数,此时,ctime() 方法的的作用相当于asctime(localtime(secs)) 方法。 l 返回值:返回一个字符串。
monotonic() 方法用于获取一个单调时钟的值(以浮点类型的秒为单位)。该值为不能倒退的时钟值,并且该值不会受到系统时钟更新后的影响。语法格式如下: time.monotonic() 参数说明: l 返回值:返回一个单调时钟的值。
sleep() 方法的作用是休眠,使程序按指定的秒数休眠若干时间。语法格式如下: time.sleep(secs) 参数说明: l secs:休眠执行的秒数。secs 以秒为单位,如果想定时毫秒,可以使用小数,以便指示更精确地暂停时间。如0.1 秒,则代表暂停100 毫秒。 l 返回值:无。
time 模块提供了各种时间相关的函数,该模块中对于时间表示的格式有如下三种: l 时间戳(timestamp):时间戳表示的是从1970 年1 月1 日00:00:00 开始按秒计算的偏移量。 l 时间元组(struct_time):共有九个元素,分别为:年、月、日、时、分、秒、一周中的第几日、一年中的第几日、夏令时。 l 格式化时间字符串(format time):已格式化的结构使时间更具可读性,包括自定义格式和固定格式。
so
os 模块是Python 内置的与操作系统中的文件系统相关的模块,该模块依赖于操作系统。
系统相关
文件与目录
getcwd() 方法用于返回表示当前工作目录的字符串。语法格式如下: os.getcwd() 参数说明: l 返回值:返回表示当前工作目录的字符串。
listdir() 方法用于返回指定路径下的文件和目录的名称(不包括子目录)。语法格式如下: os.listdir(path='.') 参数说明: l path:表示一个路径,用于指定要获取的文件和目录的根目录,不能是文件路径。 l 返回值:返回一个列表,其中包含path 路径下的目录和文件的名称(按字母顺序排列),但不包括“.”和“..”。
mkdir() 方法用于创建一级目录。语法格式如下: os.mkdir(path,mode=0o777,*,dir_fd=None) 参数说明: l path:用于指定要创建目录的路径。 l mode:表示指定目录的模式,默认模式为八进制的777。类似于chmod() 方法。 l dir_fd :表示指定打开文件描述符的路径。默认值为None。 l 返回值:无。 说明:使用mkdir() 方法只能创建一级目录,即创建目录e:/mr/wgh/11,且目录e:/mr/wgh 必须是存在的。
makedirs() 方法用于采用递归方式创建多级目录。语法格式如下: os.makedirs(name,mode=0o777,exist_ok=False) 参数说明: l name:用于指定要创建目录的路径。 l mode:指定目录的模式,默认模式为八进制的777。类似于chmod() 方法。 l exist_ok:可选参数,如果值为False,当要创建的目录已经存在时,抛出FileExistsError异常;如果值为True,当要创建的目录已经存在时,不会抛出异常。默认值为False。 l 返回值:无。
remove() 方法用于删除指定路径的文件。语法格式如下: os.remove(path,*,dir_fd=None) 参数说明: l path:用于指定要删除的路径(不能是目录,如果是目录,则抛出IsADirectoryError 异常。目录需要使用os.rmdir() 方法删除)。 l dir_fd :表示指定打开文件描述符的路径。默认值为None。 l 返回值:无。
removedirs() 方法用于递归删除目录,即删除多级目录。语法格式如下: os.removedirs(name) 参数说明: l name:用于指定要删除目录的路径。该目录中,最后一级目录必须为空,否则将抛出“OSError:[WinError 145] 目录不是空的”异常。 l 返回值:无。 说明:在调用removedirs() 方法递归删除目录时,只有要删除的目录为空时,才会被删除。
walk() 方法用于遍历目录树。语法格式如下: os.walk(top,topdown=True,onerror=None,followlinks=False) 参数说明: l top:用于指定要遍历内容的根目录。 l topdown:可选参数,用于指定遍历的顺序。如果值为True,表示自上而下遍历(即先遍历根目录);如果值为False,表示自下而上遍历(即先遍历最后一级子目录)。默认值为True。 l onerror :可选参数,用于指定错误处理方式,默认为忽略。如果不想忽略,也可以指定一个错误处理函数。通常情况下采用默认。 l followlinks:可选参数,默认情况下,walk() 方法不会向下转换成解析到目录的符号链接。将该参数值设置为True,表示用于指定在支持的系统上访问由符号链接指向的目录。 l 返回值:返回一个包括3 个元素(dirpath, dirnames, filenames)的元组生成器对象。其中,dirpath 表示当前遍历的路径,是一个字符串;dirnames 表示当前路径下包含的子目录,是一个列表;filenames 表示当前路径下包含的文件,也是一个列表。
进程相关
os.path
os 模块是Python 内置的与操作系统功能和文件系统相关的模块。该模块的子模块os.path 是专门用于进行路径操作的模块。常用的路径操作主要有判断目录是否存在、创建目录、删除目录和遍历目录等。 说明:在使用os.path 模块时,推荐使用字符串(Unicode)表示文件名或者路径。由于某些Unix 操作系统不支持Unicode 字符串,所以需要使用字节对象;而在Windows 操作系统中,则推荐所有的应用程序都使用字符串对象来访问文件。
属性
supports_unicode_filenames 属性用于标记当前的文件系统是否支持Unicode 文件名。语法格式如下: os.path.supports_unicode_filenames 参数说明: l 返回值:如果文件系统支持Unicode文件名,则返回值为True。
获取路径
abspath() 方法用于返回文件或者目录的绝对路径。语法格式如下: os.path.abspath(path) 参数说明: l path:表示要获取绝对路径的相对路径,可以是文件也可以是目录。 l 返回值:返回获取到的绝对路径。 说明:绝对路径是指在使用文件时指定文件的实际路径。它不依赖于当前工作目录。 注意:abspath() 方法在获取实际路径时,并不会检查路径是否真实存在,只是把当前文件目录与abspath()方法给定的路径进行拼接。 print(os.path.abspath(os.path.basename(__file__)))
判断路径
exists() 方法用于判断路径(文件或目录)是否存在,如果存在则返回True ;不存在则返回False。如果是断开的符号链接,也返回False。语法格式如下: os.path.exists(path) 参数说明: l path:表示要判断的路径,可以采用绝对路径,也可以采用相对路径。 l 返回值:如果给定的路径存在,则返回True,否则返回False。 注意:在使用exists() 方法时,如果某些平台未授予os.stat() 对所请求文件有执行的权限,即使路径真实存在,使用该方法也会返回False。
isfile() 方法用于判断是否为普通文件。语法格式如下: os.path.isfile(path) 参数说明: l path:表示要判断的路径,可以采用绝对路径,也可以采用相对路径。 l 返回值:如果给定的路径对应的文件是普通文件,则返回True,否则返回False。
isdir() 方法用于判断指定的路径是否为目录。语法格式如下: os.path.isdir(path) 参数说明: l path:表示要判断的路径,可以采用绝对路径,也可以采用相对路径。 l 返回值:如果给定的路径是目录,则返回True,否则返回False。
替换
获取路径信息
拼接及规范路径
join() 方法用于将两个或者多个路径拼接到一起组成一个新的路径。语法格式如下: os.path.join(path, *paths) 参数说明: l path:表示要拼接的文件路径。 l *paths:表示要拼接的多个文件路径,这些路径间使用逗号进行分隔。如果在要拼接的路径中,没有一个绝对路径,那么最后拼接出来的将是一个相对路径。 l 返回值:拼接后的路径。 说明:使用os.path.join() 函数拼接路径时,并不会检测该路径是否真实存在。
分隔路径
split() 方法用于从一个路径中分割出目录和文件名。语法格式如下: os.path.split(path) 参数说明: l path:表示要分割的路径,可以采用绝对路径,也可以采用相对路径。 l 返回值:返回一个元组,与(os.path.dirname(),os.path.basename()) 返回的元组相同。如果指定的是一个相对路径,并且以斜杠结尾,则返回的元组的第二个元素为空。
splitdrive() 方法用于从一个路径中分割驱动器和目录,在不使用驱动器的操作系统中,返回元组的第一个元素始终为空字符串。语法格式如下: os.path.splitdrive(path) 参数说明: l path:表示要分割的路径,可以采用绝对路径,也可以采用相对路径。 l 返回值:返回一个元组,它的第一个元素为字符串表示的驱动器名,第二个元素为字符串表示的目录。如果指定的路径为相对路径,则返回元组的第一个元素为空字符串。
splitext() 方法用于从一个路径中分割基本文件名和扩展名。语法格式如下: os.path.splitext(path) 参数说明: l path:表示要分割的路径,可以采用绝对路径,也可以采用相对路径。 l 返回值:返回一个元组,它的第一个元素为字符串表示的基本文件名(路径中除扩展名以外的部分),第二个元素为字符串表示的扩展名(包括“.”号)。如果指定的路径中不包括扩展名,则返回元组的第二个元素为空字符串。