昨晚有了点小想法,想写个小脚本。
用到了 glob 模块 和 map 函数 觉得他们配合起来和不错的。
#coding:utf8 import glob print "glob.golb 方法返回 " , glob.glob(r"/var/log/*.log") a = glob.iglob(r"/var/log/*.log") print "glob.igolb 方法返回" , a for i in a: print i
执行结果
glob.golb 方法返回 ['/var/log/anaconda.log', '/var/log/yum.log', '/var/log/mysqld.log', '/var/log/scrollkeeper.log', '/var/log/boot.log']
glob.igolb 方法返回 <generator object iglob at 0x14a178c0>
print for 循环
/var/log/anaconda.log
/var/log/yum.log
/var/log/mysqld.log
/var/log/scrollkeeper.log
/var/log/boot.log
map 函数 好东西啊
Python里面还有什么东西是能够同时迭代多个序列的吗?想起来有个函数map(function, iterable, ...) ,它能够同时遍历给定的多个序列,每次都从每个序列中各取一个值组成一个元组对象,然后调用 function 并传入该对象。如果多个序列的长度不一样,那么所有其他序列都会被用None填充到最长序列的长度。
1
list1 =[1,3434,4343] def function(x): return x*100 print map(function,list)
执行结果:
[100, 343400, 434300]
字典的每个元素都执行function 在输出结果。
2
lis1 =[1,2,3] lis2 =[4,5,6] lis3 =[7,8,9] print map(None,lis1,lis2,lis3)
执行结果:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
把列表相同 index 值组合成一个元组。如果不列表元素个数不一样,没有的以None表示
例如 list2 = [4,5,6,'x']
执行结果:
[(1, 4, 7), (2, 5, 8), (3, 6, 9), (None, 'x', None)]
3
把None 换成另一个function 呢?
map(None,lis1,lis2,lis3) 例如
def be(a,b,c): return a+b+c lis1 =[1,2,3] lis2 =[4,5,6] lis3 =[7,8,9] print map(be,lis1,lis2,lis3)
执行结果:
[12, 15, 18]
把列表相同 index 值 按照function 执行。
注:
列表元素必须相等