递归列出目录中的文件
函数讲解
os .listdir() 列出当前目录下的内容。
1
2In [5]: os.listdir('/root/aming')
Out[5]: ['advance', 'basic', 'tmp.txt']os.path.isdir() 判断是否为目录,是,返回True;不是或不存在,返回False。
1
2
3
4
5In [6]: os.path.isdir('/root/aming')
Out[6]: True
In [7]: os.path.isdir('/root/aming/tmp.txt')
Out[7]: Falseos.path.isfile() 判断是否为文件,是,返回True;不是或不存在,返回False。
1
2
3
4
5
6
7
8In [8]: os.path.isfile('/root/aming')
Out[8]: False
In [9]: os.path.isfile('/root/aming/222')
Out[9]: False
In [10]: os.path.isfile('/root/aming/tmp.txt')
Out[10]: Trueos.path.join() 将字符连接为目录,不判断该路径是否存在。
1
2
3
4
5
6
7
8In [11]: os.path.join('root','aming','tmp.txt')
Out[11]: 'root/aming/tmp.txt'
In [12]: os.path.join('/root','aming','tmp.txt')
Out[12]: '/root/aming/tmp.txt'
In [13]: os.path.join('/root','aming','123')
Out[13]: '/root/aming/123'
递归输出
列出目录下所有文件,包括子目录
1 | #!/usr/bin/python |
输出结果
1 | /root/aming/tmp.txt |
注意:当上述文件中if files:和if dirs:判断调换位置,输出结果将会发生变化,可自行尝试。
匿名函数
关键字lambda
表示匿名函数。
lambda函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方。
匿名函数只能有一个表达式,不用写return
,返回值就是该表达式的结果。
实例对比
1 | def fun(x,y): |
更改为lambda函数
1 | r = lambda x, y:x * y |
lambda语句中,冒号前是参数,可以有多个,逗号隔开;冒号后是返回值。
1 | In [26]: r = lambda x, y:x*y |
lambda语句构建的其实是一个函数对象。
1 | In [28]: r |
带有< >这种都是对象。
优点
使用lambda可以省去定义函数的过程,让代码更精简。
对于一些抽象的,不会被别的地方重复使用的函数,使用lambda不需要考虑命名的问题。
使用lambda有些时候让代码更容易理解。
实例
- reduce()函数
对序列进行操作,具体操作由lambda函数定义,定义的函数必须为2元计算。1
2In [29]: reduce(lambda x, y:x + y, range(1,101))
Out[29]: 5050