又过了遍官方文档,收录总结一下,用于以后复习。
1.操作系统
os模块提供了一系列的接口同操作系统交互。
os.getcwd() #获得当前路径
os.chdir() #更改当前路径
os.system('ls') #执行命令
shutil模块提供许多易于使用的文件和文件集合上的高级操作
shutil.copyfile(src, dst)
shutil.move(src, dst) #以递归方式移动文件或目录(src)到另一个位置(dst)。
2.文件通配符
glob模块提供了一个函数用于在目录中以通配符搜索文件,并生成匹配的文件列表。
glob.glob('*.py')
3.脚本参数
执行脚本输入的参数,保存在
sys.argv
argparse模块提供更强大、 更灵活的命令参数处理功能。
4.错误输出和终止程序
sys模块还具有stdin、stdout和stderr属性。stderr可用于显示警告和错误信息,即使标准输出已经被重定向了。
sys.stderr.write('Warning');
5.字符串匹配
re模块提供了正则表达式工具
re.findall(pattern, string, flags=0)
re.sub(pattern, repl, string, count=0, flags=0) #实现相对复杂的字符串替换处理,然后返回被替换后的字符串
只是简单功能时,可直接使用字符串方法。
'tea for too'.replace('too', 'two')
6.数学计算
math模块提供接口访问底层c函数库的浮点运算函数
math.cos(math.pi / 4.0)
math.log(1024, 2)
random模块能产生随机数。
random.choice(seq) # 从非空序列seq 中返回一个随机的元素。
random.sample(population, k) #从population序列中随机选择k个元素,以列表返回
random.randrange(stop) #利用range()函数,同 choice(range(start, stop, step))
7.访问网络
有很多模块可以使用,最简单的是 urllib2模块从url获取网页数据, smtplib模块发送电子邮件。
import urllib2
for line in urllib2.urlopen('http://blog.junjietang.cn/'):
print line
发送邮件可看之前写的,进程执行结束发送邮件通知的文章。
8.日期时间
datetime 模块提供了各种对时间获取的接口。
from datetime import date
now = date.today()
now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")#可去官网查对应格式码
#输出'07-03-16. 03 Jul 2016 is a Sunday on the 03 day of July.'
9.数据压缩
数据打包和常见格式的压缩都直接支持, 这些模块包括:zlib、gzip、bz2、zipfile和tarfile。
>>> s = 'test111122222333333333344444444444444444'
>>> len(s)
40
>>> t = zlib.compress(s) #压缩,s后面能跟0-9的压缩程度控制,0不压缩9最强
>>> len(t)
22
>>> zlib.decompress(t) #解压缩
'test111122222333333333344444444444444444'
>>> zlib.crc32(s) #获得s的CRC校验
1914569509
10.性能测试
timeit模块提供了简单方法来测试少量代码。
>>> from timeit import Timer
>>> Timer('t=a; a=b; b=t', 'a=1; b=2').timeit() #第二个参数先执行,然后执行第一个参数的语句;此处要做a,b互换; timeit()参数为循环次数,默认100万次;返回时间
0.07460252239635758
>>> Timer('a,b = b,a', 'a=1; b=2').timeit()
0.04626892161963703
与timeit的精细的粒度相反,profile和pstats模块提供了针对更大代码块的时间度量工具。
11.质量控制
doctest模块提供一个工具,验证内嵌到文档中的测试代码是否与文档一致。
>>> def average(values):
... """Computes the arithmetic mean of a list of numbers.
... >>> print average([20, 30, 70])
... 40.0
... """
... return sum(values, 0.0) / len(values)
...
>>> import doctest
>>> doctest.testmod()
TestResults(failed=0, attempted=1)
unittest模块更难使用一些,不过可以在一个独立的文件里提供一个更全面的测试集:
>>> 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)
... with self.assertRaises(ZeroDivisionError):
... average([])
... with self.assertRaises(TypeError):
... average(20, 30, 70)
...
>>> unittest.main()
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK