python学习 - 标准库概览

**文章首发于我的个人博客:


@

操作系统接口

使用 os 模块,它提供了操作系统的接口。

导入并且使用:

import os
# 返回当前工作目录
print(os.getcwd())
# 更改当前工作目录
os.chdir('venv/Include')
print(os.getcwd())
# 命令行操作
os.system('mkdir test')
--------
F:\code\python\review
F:\code\python\review\venv\Include

要使用 import os

其他相关:

print(dir(os)) # 获得所有模块的函数列表:
print(help(os)) # 获得所有模块的文档字符串

针对于文件的操作: shutil 模块。


文件通配符

glob 模块可以根据目录通配符来搜索文件:

并且以列表形式返回

import glob
print(glob.glob('test_floder/*.py')) # test_floder文件夹下的所有py文件

命令行参数

命令行参数以链表形式存储于 sys 模块的argv变量。

import sys
print(sys.argv) # 打印出参数
--------
['review10.py', '1', '2', '3', '4', '5', '哈哈哈', '牛逼']

sys 还具有stdin stdout stderr等属性,例如:

sys.stdout.write('重定向输出')
sys.stderr.write('ERROR! 警告!')
sys.exit(666) # 直接退出 退出编号为666

字符串正则匹配

re 模块提供了正则匹配的工具:

re.findall(r'\bf[a-z]*','which is the foot fell fol end')
re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')

字符串的替换操作:

str = 'wo ai ni ylh 我爱你'
str.replace('我爱你','不可能')
print(str)
----------
wo ai ni ylh 不可能

数学

math 提供了底层C函数的math库的支持:

示例如下:

print(math.gcd(15,10))
print(math.pi)
print(math.sin(10))
----------
5
3.141592653589793
-0.5440211108893698

random 库提供了随机数的操作:

# 一个随机的浮点数
print(random.random())
# 随机选择
l = ['random1','random2','random3']
print(random.choice(l))
# 指定范围随机数
print(random.randint(10,50))
# 指定范围内不放回取样
print(random.sample(range(10),10))
------------
0.8645680272544677
random1
34
[3, 6, 2, 7, 0, 8, 5, 1, 9, 4]

互联网访问

urllib 提供了互联网的访问功能。

用于处理url读取信息的 request

my_url1 = urlopen('https://www.baidu.com')
print(my_url1.getcode()) # 200表示正常, 404表示不正常(没有成功打开网页)

详细信息参考:

Python urllib | 菜鸟教程


日期与时间

Datetime 提供了时间与日期的操作。

from datetime import date
# 获取当前时间
now = date.today()
print(now)
# 更精确的时间
print(now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B."))
# 时间的加减法
birthday = date(2003,7,8)
print(now - birthday)
----------
2023-04-16
04-16-23. 16 Apr 2023 is a Sunday on the 16 day of April.
7222 days, 0:00:00

数据的压缩

zlib 库提供了文本的压缩与解压缩等操作:

注意需要以 b 开头的字符串

str = b'witch which has which witches wrist watch'
print(len(str)) # 41
# 压缩
str2 = zlib.compress(str) # 37
print(len(str2))
# 解压缩
print(zlib.decompress(str2))
------------
41
37
b'witch which has which witches wrist watch'

性能测试

timeit 提供了关于一段代码的性能测试的功能:

事实证明元组封装和拆封交换元素比传统方式快

print(Timer('t=a;a=b;b=t','a=1;b=2').timeit())
print(Timer('a,b=b,a','a=1;b=2').timeit()
print(Timer('sum([1,2,3,4,5])').timeit())
print(Timer('for i in range(1,6): sum+=i','sum=0').timeit())
---------
0.01585819999999999
0.01412260000000004

0.11843460000000006
0.2553228999999999

质量测试

doctest 用于进行质量的测试,它基于文档字符串进行检测

def test(ls):
	""" 计算算数平均值

	>>> print(test([10,20,30]))
	20.0  # 
	"""
	return sum(ls)/len(ls)

def my_sum(ls):
	""" 计算列表的和
	
	>>> print(my_sum([1,2,3,4,5]))
	15
	"""
	return sum(ls)

doctest.testmod()

其他库

包含了支持专业编程工作所需的更高级的模块:

  • reprlib :提供了repr版本的定制版
  • pprint :提供了美化打印的方式
  • textwrap :模块可以格式化文本段落适应宽度
  • locale :按访问预定好的国家信息数据库

参考:

11. 标准库浏览 – Part II — Python tutorial 3.6.3 documentation

posted @ 2023-04-19 17:15  hugeYlh  阅读(15)  评论(0编辑  收藏  举报