1.8 递归列出目录里的文件
模块中的函数 | 作用 |
---|---|
os.listdir(路径) | 获取路径中的文件并返回字符串组成的列表 |
os.path.isdir(s) | 判断s是否是目录 返回布尔值 |
os.path.isfile(path) | 判断s是否是文件 返回布尔值 |
os.path.join(a, b) | 把a和b组成路径 不关心是否存在 |
os.listdir(路径)
1 | In [15]: os.listdir('/home/') |
os.path.isdir(s)
1 | In [16]: os.path.isdir('/') |
os.path.isfile(path)
1 | In [18]: os.path.isfile('/root/1.py') |
os.path.join(a, b)
1 | In [19]: os.path.join('/etc/','asdf','ligoudan') ##路径并不存在 |
练习
使用递归来列出目录中的文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#!/usr/bin/python
# coding:utf-8
import os
import sys
def fun(path):
lsdir = os.listdir(path) ##把路径变为列表
dirs = [i for i in lsdir if os.path.isdir(os.path.join(path,i))] ##把该路径下的目录作为列表
files = [i for i in lsdir if os.path.isfile(os.path.join(path,i))] ##把该路径下的文件作为列表
if dirs: ##判断是目录列表
for d in dirs: ##遍历目录列表中的每个目录
fun(os.path.join(path,d)) ##递归改文件的完整路径
if files: ##判断是文件列表
for f in files: ##遍历文件列表中的每个文件
print os.path.join(path,f) ##打印出该文件的完整路径
fun(sys.argv[1]) ##传入参数
1.9 匿名函数
使用快捷单行的形式来定义函数,这样的函数通常不需要函数名。lambda函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方。
1)lambda语句中,冒号前是参数,可以有多个,逗号隔开,冒号右边是返回值。
2)lambda语句返回是一个函数对象
语法格式
1 | 变量名 = lambda 参数1,... : 表达式 |
1 | In [1]: r = lambda x,y : x*y ##使用lambda函数 x*y是返回值 |
内置函数 | 作用 |
---|---|
reduce(function, sequence[, initial]) | 遍历把序列sequence的元素并通过函数function(只能带两个参数)进行处理 |
reduce()
1 | In [5]: a = reduce(lambda x,y:x+y ,xrange(1,6)) ##等于5+4+3+2+1 |