day10(3)
python3 标准库相关
操作系统接口
os模块提供了不少与操作系统相关联的函数
# 引入
import as
针对日常的文件和目录管理,
shutil
模块提供了一个易于使用的高级接口
#引入
import shutil
shutil.copyfile('data.db','archive.db')
shutil.move('/build','installdir')
文件通配符
glob
模块提供了一个函数,用于从目录通配符搜索中生成文件列表
improt glob
glob.glob('*.py')
命令行参数
通用工具脚本经常调用命令行参数。这些命令行参数以链表的形式存放在
sys
模块的argv
变量。
命令行 python demo.py on two three
import sys
print(sys.argv)
错误输出重定向和程序终止
sys
还有stdout
,stdin
,stderr
属性,即使在stdout被重定向时,后者也可以用于显示警告和错误信息
大多数脚本的重定向终止都使用 sys.exit()
字符串正则匹配
re
模块为高级字符串处理提供了正则表达式工具,对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案。
import re
re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
# ['foot', 'fell', 'fastest']
re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
# 'cat in the hat'
数学
math
模块为浮点数运算提供了对底层 C函数库的访问
import math
math.cos(math.pi / 4)
math.log(1024 , 2)
random
提供了生成随机数的工具
import random
random.choice(['apple','pear','banana'])
random.sample(range(100), 10)
random.random()
random.randrange(6)
访问互联网
-
用于处理从 urls 接收的数据
urllib.request
from urllib.request import urlopen for line in urlopen('http://www.baidu.com'): line = line.decode('utf-8') if 'EST' in line or 'EDT' in line: print(line)
-
用于发送电子邮件的
smtplib
improt smtplib server = smtplib.SMTP('localhost') server.sendmail('soothsayer@163.com') server.quit()
需要本地有一个在运行的邮件服务器
日期和时间
datetime
模块为日期和时间处理同时提供了简单和复杂的方法
form datetime import date
#今天
today = datetime.date.today()
#昨天
yesterday = today - datetime.timedelta(days=1)
#上个月
last_month = today.month - 1 if today.month - 1 else 12
#当前时间戳
time_stamp = time.time()
#时间戳转datetime
datetime.datetime.fromtimestamp(time_stamp)
#datetime转时间戳
int(time.mktime(today.timetuple()))
#datetime转字符串
today_str = today.strftime("%Y-%m-%d")
#字符串转datetime
today = datetime.datetime.strptime(today_str, "%Y-%m-%d")
#补时差
today + datetime.timedelta(hours=8)
数据压缩
zlib
模块支持通用的数据打包和压缩格式:zlib
,gzip
,bz2
,zipfile
,tarfile
import zlib
s = b'witch which has which witches wrist watch'
t = zlib.compress(s)
zlib.decompress(t)
zlib.crc32(s)
性能度量
from timeit import Timer
Timer('t=a;a=b;b=t','a=1;b=2').timeit()
相对于 timeit
的细粒度, profile
和 pstats
模块提供了真毒更大代码块的时间度量工具
测试模块
doctest
模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。
测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。
通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致
def average(values):
return sum(values) / len(values)
import doctest
doctest.testmod() # 自动验证嵌入测试
unittest
模块不像 doctest 模块那么容易使用,但它可以在一个独立的文件中提供一个更全面的测试集
import unittest
class TestStatisticalFunctions(unittest.TestCase):
def test_average(self):
self.assertEqual(average([20, 30, 70]), 40.0)
self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
self.assertRaises(ZeroDivisionError, average, [])
self.assertRaises(TypeError, average, 20, 30, 70)
unittest.main()