Python第13天 遍历目录文件匿名函数

2018-11-30 08:03:16

1.8 用递归的方法打印目录下的所有文件名
-------------------方法1----------------------
#!/usr/bin/env python
#coding:utf8 
import os
import sys

def listdir(n):
    lsdir = os.listdir(n)
    for i in lsdir:
        if os.path.isfile(os.path.join(n,i)):
            print os.path.join(n,i)
        else:
            listdir(os.path.join(n,i))
listdir(sys.argv[1])
-------------------方法2----------------------
#!/usr/bin/env python
#coding:utf8
import os
import sys

def print_file(path):
    lsdir = os.listdir(path)
    files = [ i for i in lsdir if os.path.isfile(os.path.join(path,i)) ] #判断是否是文件
    dicts = [ i for i in lsdir if os.path.isdir(os.path.join(path,i)) ]  #判断是否是目录
    if files: #是文件就直接打印
        for i in files:
            print os.path.join(path,i)
    if dicts: #是目录,调用print_file函数本身,继续循环
        for f in dicts:
            print_file(os.path.join(path,f))
print_file(sys.argv[1])
--------------------解析--------------------
os.path.isdir()
 - 判断后面的文件是否是目录,是的话返回True(不能判断目录是否存在,不存在也会返回false)
os.path.isfile()
 - 判断后面的文件是否是文件,是的话返回True(不能判断文件是否存在,不存在也会返回false)
os.path.join()
 - 连接括号中的路径(文件)
 - os.path.join('/etc/','passwd','abc') ----> /etc/passwd/abc

1.9 匿名函数

  • lambda
  • 匿名函数没有函数名
  • 匿名函数是一种快速定义单行的最小函数
  • lambda语句构建出来的是一个函数对象,可以用一个变量来接收
r = lambda x,y:x+y
注:冒号(:)前面的是参数,可以有多个用逗号(,)隔开,冒号(:)后面的是return的返回值

reduce(lambda x,y:x+y,range(1,6))
reduce(lambda x,y:x+y,[11,12,13,14])
---> 1+2+3+4+5
---> 11+12+13+14
reduce是内置函数,它需要有两个参数,第一个参数是函数,第二个参数是序列

给TA打赏
共{{data.count}}人
人已打赏
开发

Python第49天 针对页面增加权限的判断

2023-9-11 18:33:57

开发

Python第三天 安装使用github

2023-9-11 18:33:59

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索