python3入门与进阶笔记_python笔记(基础进阶1.8-1.9)

1.8 递归列出目录里的文件

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

-- coding:UTF-8 --

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 匿名函数

匿名函数:

lambda函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方。可以把函数写在一行里。

•def fun(x, y):

return x*y

fun(2, 3)

普通函数定义

•r = lambda x,y: x*y

r(2, 3)

lambda函数定义

•匿名函数优点:

1.使用python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。

对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题。

使用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() 取序列的最小值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值