os内的几个常用方法:
os.listdir() 列出目录下所有的文件 os.listdir(".") os.listdir("/home") 列出当前目录和/home目录下的所有文件,只列出第一层
os.path.isdir() 判断是否是目录,是返回true,否则返回false
os.path.isfile() 判断是否是文件,是返回true,否则返回false
os.path.join() 链接文件的路径 ,只是链接,不会判断文件存不存在
In [5]: os.path.join(‘/etc/‘,‘passwd‘)
Out[5]: ‘/etc/passwd‘
打印目录下所有文件
def print_files(path):
isdir, isfile, join = os.path.isdir, os.path.isfile, os.path.join
lsdir = os.listdir(path)
dirs = [i for i in lsdir if isdir(join(path,i))]
files = [i for i in lsdir if isfile(join(path,i))]
if dirs:
for d in dirs:
print_files(join(path,d))
if files:
for f in files:
print join(path,f)
print_files(sys.argv[1])
注释版本:
#!/usr/bin/python
import os
import sys
def print_files(path):
lsdir=os.listdir(path) #列出path路径下的所有文件和文件夹
dirs=[i for i in lsdir if os.path.isdir(os.path.join(path,i))] #循环遍历lsdir,并判断是否是目录,如果是,则链接路径并赋值给dirs
files=[i for i in lsdir if os.path.isfile(os.path.join(path,i))] #循环遍历lsdir,并判断是否是文件,如果是,则链接路径并赋值给files
if files:
for f in files: #如果文件存在,则遍历文件列表
print os.path.join(path,f) #循环打印文件名
if dir:
for d in dirs: #对目录列表再次遍历
print_files(os.path.join(path,d)) #递归调用,继续在深一层的目录下查找
print_files(sys.argv[1])
相当于linux命令的 find -type f
1.9 匿名函数
匿名函数:
?def fun(x, y):
return x*y
fun(2, 3)
普通函数定义
?r = lambda x,y: x*y
r(2, 3)
lambda函数定义
?匿名函数优点:
?lambda语句中,冒号前是参数,可以有多个,逗号隔开,冒号右边是返回值。
?lambda语句构建的其实是一个函数对象
reduce()函数 reduce(fun,range(1,5)) 对range(1,5)返回的序列用fun函数去处理 reduce函数第二个参数是一个序列
可以用lambda定义reduce中的函数 reduce(lambda x,y:x*y)
In [13]: reduce(lambda x, y:x+y, range(1,101))
Out[13]: 5050
序列处理函数
len() 取序列的长度
max() 取序列的最大值
min() 取序列的最小值
原文:http://blog.51cto.com/4833797/2324096