1.8 递归列出目录里的文件 1.9 匿名函数
1.8 递归列出目录里的文件
#### 遍历目录里的文件(不支持子目录文件)
import os
for i in os.listdir('C:/Users/Administrator/Desktop/技术文档'):
print (i)
###########################################
#### 目录是否存在
import os
d = os.path.isdir('C:/Users/Administrator/Desktop/技术文档/.')
print(d)
> True
#### 文件是否存在
import os
d = os.path.isfile('C:/Users/Administrator/Desktop/技术文档')
print(d)
> False
#### 路径连接
import os
d = os.path.join('C:/Users/Administrator/Desktop','aa','bb')
print(d)
> C:/Users/Administrator/Desktop\aa\bb
######################################################
#### 遍历目录里的文件和子目录里的文件
import os
def print_files(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 files:
for f in files:
print(os.path.join(path, f))
if dirs:
for d in dirs:
print_files(os.path.join(path, d))
print_files('C:/Users/Administrator/Desktop/技术文档')
1.9 匿名函数
匿名函数
- lambda函数是一种快速定义单行的最小函数, 可以用在任何需要函数的地方
lambda
defun(x, y):
return x*y
#
r = lambda x,y:x*y
print(r(2,3)) # 调用
> 6
- 匿名函数优点:
- 1.使用python写一些脚本时, 使用lambda可以省去定义函数的过程, 让代码更加精简
- 2.对于一些抽象的, 不会被别的地方再重复使用的函数, 有时候函数起个名字也是个难题, 使用lambda不需要考虑命名的问题
- 3.使用lambda在某些时候让代码更容易理解
lambda基础
- lambda语句中, 冒号前是参数, 可以有多个,逗号隔开, 冒号右边是返回值
- lambda语句构建的其实是一个函数对象
lamdba使用
from functools import reduce
def add(x, y):
return x + y
sum = reduce(add, range(1,101))
print(sum)
> 5050
#
from functools import reduce
print(reduce(lambda x,y:x+y, range(1,101)))
> 5050
习题
- 从终端接收若干个数字,要求使用filter()函数,将输入的不是数字的值剔除掉(用户输入的内容有随机性,当我们要接收一个数字的时候,他可能会输入一个字符串过来,要求当用户输入的不是数字,就剔除掉)
- 从终端接收若干个以空格隔开的字符串,然后去除所有的26个字符之外的字符后,打印到屏幕上 要求:使用map()函数,map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
- 从终端接收若干个以空格隔开的字符串 (1).以空格隔开的字符串为用户想要输入的一个值 (2).用户在输入时不小心按出来了字母键