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是内置函数,它需要有两个参数,第一个参数是函数,第二个参数是序列
-------------------方法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
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是内置函数,它需要有两个参数,第一个参数是函数,第二个参数是序列