文章首发于我的个人博客:欢迎大佬们前来逛逛
操作系统接口
使用 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表示不正常(没有成功打开网页)
详细信息参考:
日期与时间
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
:按访问预定好的国家信息数据库
参考: