|
Standard Library
Library Name | Usage | Sample | os | 提供一些类似于Shell的操作 |
>>> import os
>>> os.system('time 0:02')
0
>>> os.getcwd() # Return the current working directory
'C:\\Python30'
>>> os.chdir('/server/accesslogs')
| shutil | 文件和目录管理 |
>>> import shutil
>>> shutil.copyfile('data.db', 'archive.db')
>>> shutil.move('/build/executables', 'installdir')
| glob | 支持通配符的文件搜索 |
>>> import glob
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']
| sys.argv
getopt
optparse
| 输入参数 | | 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'
| random | 随机函数 |
>>> import random
>>> random.choice(['apple', 'pear', 'banana'])
'apple'
>>> random.sample(range(100), 10) # sampling without replacement
[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
>>> random.random() # random float
0.17970987693706186
>>> random.randrange(6) # random integer chosen from range(6)
4
| datetime | 日期时间 |
# dates are easily constructed and formatted
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'
# dates support calendar arithmetic
>>> birthday = date(2005, 3, 6)
>>> age = now - birthday
>>> age.days
14368
|
zlib
gzip
bz2
tarfile
zipfile
| 压缩解压缩 |
>>> import zlib
>>> s = 'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979
| timeit | 测量时间 |
>>> from timeit import Timer
>>> Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
0.57535828626024577
>>> Timer('a,b = b,a', 'a=1; b=2').timeit()
0.54962537085770791
| 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)
self.assertRaises(ZeroDivisionError, average, [])
self.assertRaises(TypeError, average, 20, 30, 70)
unittest.main() # Calling from the command line invokes all tests
| Template | 模板替换 |
>>> t = Template('${village} folk send $$10 to $cause')
>>> t.safe_substitute(village='nottingham', cause='the ditch fund')
'village folk send $10 to the ditch fund'
| MultiThread | 多线程 |
import threading, zipfile
class AsyncZip(threading.Thread):
def __init__(self, infile, outfile):
threading.Thread.__init__(self)
self.infile = infile
self.outfile = outfile
def run(self):
f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED)
f.write(self.infile)
f.close()
print('Finished background zip of:', self.infile)
background = AsyncZip('mydata.txt', 'myarchive.zip')
background.start()
print('The main program continues to run in foreground.')
background.join() # Wait for the background task to finish
print('Main program waited until background was done.')
| Logging | 日志 |
import logging
logging.debug('Debugging information')
logging.info('Informational message')
logging.warning('Warning:config file %s not found', 'server.conf')
logging.error('Error occurred')
logging.critical('Critical error -- shutting down')
WARNING:root:Warning:config file server.conf not found
ERROR:root:Error occurred
CRITICAL:root:Critical error -- shutting down
| Weak References | 弱指针 |
import gc
import weakref
class Value:
def __init__(self, value=0):
self.value = value
def __repr__(self):
return str(self.value)
if __name__ == '__main__':
d = {}
v = Value(10)
d['myvalue'] = v
del v
gc.collect()
print(d['myvalue'])
e = weakref.WeakValueDictionary()
v = Value(11)
e['myvalue'] = v
del v
gc.collect()
print(e['myvalue'])
| array
deque
bisect
heapq
| 容器 | | decimal | 精确计算 |
>>> Decimal('1.00') % Decimal('.10')
Decimal("0.00")
>>> 1.00 % 0.10
0.09999999999999995
>>> sum([Decimal('0.1')]*10) == Decimal('1.0')
True
>>> sum([0.1]*10) == 1.0
False
>>> getcontext().prec = 36
>>> Decimal(1) / Decimal(7)
Decimal("0.142857142857142857142857142857142857")
| | | |
|
|