本文是python标准库学习的第三节,帮助大家学习与掌握python标准库的用法,包括operator、time、fileinput、sys、StringIO、os等,有需要的朋友参考下。
例子,pythonbiaozhunku/ target=_blank class=infotextkey>python标准库的用法。
复制代码 代码示例:
import operator
sequence = 1, 2, 4
print "add", "=>", reduce(operator.add, sequence)
print "sub", "=>", reduce(operator.sub, sequence)
print "mul", "=>", reduce(operator.mul, sequence)
print "concat", "=>", operator.concat("spam", "egg")
print "repeat", "=>", operator.repeat("spam", 5)
print "getitem", "=>", operator.getitem(sequence, 2)
print "indexOf", "=>", operator.indexOf(sequence, 2)
print "sequence
includes", "=>", operator.sequenceIncludes(sequence, 3)
add => 7
sub => -5
mul => 8
concat => spamegg
repeat => spamspamspamspamspam
getitem => 4
indexOf => 1
sequenceIncludes => False
注意copy中的一些问题:
复制代码 代码示例:
import copy
a = [[1], [2], [3]]
b = copy.copy( a )
print "before", "=>"
print a
print b
# modify original
a[0][0] = 0
a[1] = None
print "after", "=>"
print a
print b
输出结果:
before =>
[[1], [2], [3]]
[[1], [2], [3]]
after =>
[[0], None, [3]]
[[0], [2], [3]]
测量算法的运行时间:
复制代码 代码示例:
import time
def procedure():
time.sleep( 2.5 )
# measure process time
t0 = time.clock()
procedure()
print time.clock() - t0, "seconds process time"
# measure wall time
t0 = time.time()
procedure()
print time.time() - t0, "seconds wall time"
循环读文本文件:
复制代码 代码示例:
import fileinput
import sys
for line in fileinput.input( "../src/hello.xml" ):
sys.stdout.write( "-> " )
sys.stdout.write( line )
代码:
复制代码 代码示例:
import fileinput
import glob
import string, sys
for line in fileinput.input( glob.glob( "../src/hello.xml" ) ):
if fileinput.isfirstline(): # first in a file?
sys.stderr.write( "-- reading %s --n" % fileinput.filename() )
sys.stdout.write( str( fileinput.lineno() ) + " " + string.upper( line ) )
复制文件的操作:
复制代码 代码示例:
import os , shutil
print os.listdir( "../src" )
for file in os.listdir( "../src" ):
if os.path.splitext( file )[1] == ".py":
os.mkdir( "../src/back" )
print file
shutil.copy( file, os.path.join( "back", file ) )
可以使用shutil开复制整个目录,然后删除目录。
复制代码 代码示例:
import os , shutil
print os.listdir( ".." )
shutil.copytree("../src", "../src1")
shutil.rmtree( "../src1" )
想内存文件写入内容:
复制代码 代码示例:
import StringIO
file = StringIO.StringIO()
file.write( "This man is no ordinary man. " )
file.write( "This is Mr. F. G. Superman." )
print file.getvalue()
使用StringIO模块捕获输出:
复制代码 代码示例:
import StringIO
import string, sys
stdout = sys.stdout
sys.stdout = file = StringIO.StringIO()
print """a"""
sys.stdout = stdout
print string.upper( file.getvalue() )
结果输出A
也可以使用cStringIO:
复制代码 代码示例:
import cStringIO
file = cStringIO.StringIO( "asdaskdgaksdgkasdja" )
print file.getvalue()
print file.read()
小技巧:由于cStringIO比StringIO的效率高一点,但是兼容性不行,所以可以使用下面的语句:
复制代码 代码示例:
try:
import cStringIO
StringIO = cStringIO
except ImportError:
import StringIO
print StringIO
类继承的时候构造函数的一点问题:
复制代码 代码示例:
class A:
def __init__( self ):
pass
class B( A ):
def __init__( self ):
#A.__init__( self )
super( B, self ).__init__( self )
对字典使用“+”法
复制代码 代码示例:
import UserDict
class Add( UserDict.UserDict ):
def __init__( self, dict = {}, **kwargs ):
UserDict.UserDict.__init__( self )
self.update( dict )
self.update( kwargs )
def __add__( self, other ):
dict = Add( self.data )
dict.update( other )
return dict
a = Add( a = 1 )
b = Add( b = 2 )
print a + b
输出的结果为:{'a': 1, 'b': 2}
实例类似一个普通的列表对象, 但它允许你通过赋值为列表添加项目.
复制代码 代码示例:
import UserList
class AutoList( UserList.UserList ):
def __init__( self ):
super( AutoList, self ).__init__( self )
def __setitem__( self, i, item ):
if i == len( self.data ):
self.append( item )
else:
self.data[i] = item
list = AutoList()
for i in range( 10 ):
list[i] = i
print list
输出的结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
随机数:
复制代码 代码示例:
import random
for i in range(5):
# random float: 0.0 <= number < 1.0
print random.random(),
# random float: 10 <= number < 20
print random.uniform(10, 20),
# random integer: 100 <= number <= 1000
print random.randint(100, 1000),
# random integer: even numbers in 100 <= number < 1000
print random.randrange(100, 1000, 2)
随机打乱序列的顺序:
复制代码 代码示例:
import random
a = range( 10 )
print a
random.shuffle( a )
print a<span face="verdana, Arial, Helvetica, sans-serif" style="font-family: verdana, Arial, Helvetica, sans-serif;"><span class="Apple-style-span" style="font-size: 14px;
line-height: 21px; white-space: normal;">
</span></span>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 2, 6, 9, 4, 7, 3, 8, 0, 1]
你的结果可能不一样。