首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

日常运维工作有了Python会轻松到什么程度?

一段基础知识介绍后,教你用代码实现Linux下的Tree命令实战

递归的概念:函数包含了对自身的调用,那么就是递归

使用的场景:如果你发现你将要做的事情就是你现在做的,那么用递归

递归类似循环;在编写或阅读递归时,首先我们关注的是递归的终止条件

递归求和

在接触递归之前,我们先来做这么一个问题:如果说,要对一个数字列表求和(或者其他序列)求和,除了我们可以使用内置的sum函数,还有什么办法?

如果你还有更优秀的办法,可以在关于页面找到我的联系方式,有偿提交给我

while循环:

for循环:

递归求和:

递归处理非线性循环

递归还可以处理一些非线性循环,而普通的循环是无法处理的

比如这样一个列表对其求和:

L = [1,[2,[3,4],5],6,[7,8]]

由于这个列表不是一个线性迭代,包含着复杂的元素嵌套

普通的循环语句处理起来将会非常难以控制

花钱递归

思考:假如你有10000块,每天花一半,毛钱直接舍弃,那么这钱可以花几天?

递归解决:

递归注意事项

递归的最大上限次数取决于当前操作系统的内存

一个没有终止条件的递归会引发错误(类似一个死循环)

这是因为递归的每一次函数执行*,都会在内存中产生新的函数副本,递归的内存消耗大于普通循环;但是同样的,消耗了内存效率高**于普通循环

使用os模块时,不需要考虑平台差异,解释器会帮大家选择正确的系统支持

可以对进程和进程运行环境进行管理

该模块还可以处理大部分文件系统操作,比如删除重命名文件,遍历目录树,以及管理文件访问权限。

os模块主要有以下几种 :

posix(类unix操作系统)

nt(win)

mac(旧版本的MacOs)

dos(DOS)**

ossys

os负责程序与操作系统的交互

sys负责程序与解释器的交互

os.pathsys.path

sys.path是PATH环境变量

os.path是os模块下的子模块,提供了一些关于路径处理的函数

os模块常用函数

os.name:输出字符串指示正在使用的平台

os.getcwd():得到当前工作目录(就是你的进程所工作的目录),即当前脚本工作路径

运行目录:执行程序时的路径

工作目录:程序运行时,程序中我们要操作其他文件时使用的的一系列相对路径(相对路径需要参照),工作目录可在程序运行时更改

os.listdir():返回指定目录下的所有文件和目录名的一个列表,但是并没有列出来什么是目录,什么是文件。

os.remove(‘file_name’):删除指定文件,文件不存在则报错

os.rmdir(‘dir_name’):删除指定目录

os.mkdir(‘dir_name’):创建目录

os.makedirs(‘a/b/c’):递归创建目录

os.system(‘ls’):执行shell命令

os.chdir(‘file_path’):改变工作目录

os.chmod(‘file_name’):改变文件或目录的权限

Os.path模块常用函数

返回文件或目录的绝对路径

不会检查是否存在该文件或目录

将路径分隔成目录和文件名,并以一个元组返回

不会检查是否存在该文件或目录

返回路径最后的文件名

如果后面还有\ / 那么返回一个空字符串

不会检查是否存在该文件或目录

如果路径存在,则返回True,反之返回False

与上面的函数不同,他就是检查这个路径是否存在

路径拼接

不会检查是否存在该文件或目录

判断是否为目录,返回值为bool

判断是否为文件,返回值为bool

判断是否是链接,返回值为bool

返回文件大小

如果文件不存在,抛出异常

OS模块及递归实现Tree命令

看看效果

思考:如果你已经明白了Tree命令的实现套路,那么试试来实现一下find命令吧!

温馨提示:如果你对该段代码难以理解;再去好好看看递归

本文转自京峰教育Python金牌讲师李老师

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180207G0FDBN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券