列出目录中的文件能够经过下面方法:os.listdir() In [1]: import os In [4]: os.listdir('/root') Out[4]: ['.tcshrc', '.bash_history', '.bashrc', 'ENV', '.cache', '.config', '.cshrc', '.bash_logout', 'python', '.ssh', 'shell', '.bash_profile', '.ipython', '.viminfo', 'dictionary.txt', '1.txt']
判断是否为目录:python
In [5]: os.path.isdir('/home') Out[5]: True
判断是否为文件:shell
In [7]: os.path.isfile('/etc/rc.local') Out[7]: True
拼接文件名字的绝对路径:vim
In [8]: os.path.join('/etc/','passwd','abc') Out[8]: '/etc/passwd/abc'
列出目录下全部文件脚本若是下:bash
#!/usr/bin/env python # 2018/11/29 15:11 #FengXiaoqing # listDir.py import os import sys 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 dirs: for d in dirs: print_files(os.path.join(path,d)) if files: for f in files: print os.path.join(path,f) print_files(sys.argv[1])
lambda函数是一种快速定义单选的最小函数,能够用在任何须要函数的地方。 3*5实现方法: In [1]: def fun(x,y): ...: return x * y ...: In [2]: fun(3,5) Out[2]: 15
匿名函数定义若是下:ssh
In [3]: lambda x,y:x * y Out[3]: <function __main__.<lambda>> #返回的对象 In [4]: r = lambda x,y:x * y In [6]: r(3,5) Out[6]: 15
匿名函数优势:函数
1.使用python写一些脚本时候,使用lambda能够省去定义函数的过程,让代码更加精简。 2.对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不须要层次理论考虑命名的问题。 3.使用lambda在某些时候让代码更容易理解。
lambda基础:ui
lambda语句中,冒号前是参数,能够有多个,逗号隔开,冒号右边是返回值。 lambda语句构建的实际上是一个函数对象。
help(reduce)code
Help on built-in function reduce in module __builtin__: reduce(...) reduce(function, sequence[, initial]) -> value Apply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initial is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty. (END)
reduce二元计算:对象
In [19]: def add(x,y): return x + y ....: In [20]: add(1,3) Out[20]: 4
求1到100相加的和:递归
In [23]: reduce(add,range(1,101)) Out[23]: 5050 In [25]: reduce(lambda x,y:x + y ,range(1,101)) Out[25]: 5050
求阶乘:
In [26]: reduce(lambda x,y:x * y ,range(1,6)) Out[26]: 120