1、递归思考题,阶乘

  使用递归方式(函数)计算: 1*2*3*4*5*6*7*8*9*10的值

  1. def func(num):
  2. if num==1:
  3. return 1
  4. return num*func(num-1)

2、反射

利用字符串的形式去(模块)中去操作(寻找,检查,删除、增加)
  hasattr(obj,attr) 检查成员是否存在,返回一个布尔值,存在为True,否则为False
  getattr(obj,attr)  获取属性obj的值attr, 如 attr为login,则返回obj.login
  setattr(obj,attr,val) 调用这个方法给obj名为attr的值的属性赋值为val,如 setattr(user_manager,'edit_pass',True)
  delattr(obj,attr) 删除obj中的属性为attr的值,如attr等于login,则删除obj.login

  1. def run():
  2. # account/login
  3. inp = input('请输入要访问的url:')
  4. m, f = inp.split('/')
  5. # import lib.account
  6. obj = __import__("lib."+ m, fromlist=True)
  7. if hasattr(obj, f):
  8. func = getattr(obj, f)
  9. func()
  10. else:
  11. print('')

PS;  __import__   以字符串形式导入模块,lib.account  默认只导入lib。导入路径需要参数fromlist=True

3、补充几个全局变量

  

  1. __doc__ 默认的帮助信息,定义的时候在文件首部用三个引号引起来定义
  2. __file__
  3. import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
  4. __package__ 返回当前模块所属
  5. __name__ 特殊变量,只有执行当前文件时,当前文件的__name__值才等于__main__.
  6. vars() 查看提供的变量

4、模块

1) os模块 

  1. os.getcwd()                 获取当前工作目录,即当前python脚本工作的目录路径
  2. os.chdir("dirname")         改变当前脚本工作目录;相当于shellcd
  3. os.curdir                   返回当前目录: ('.')
  4. os.pardir                   获取当前目录的父目录字符串名:('..')
  5. os.makedirs('dir1/dir2')    可生成多层递归目录
  6. os.removedirs('dirname1')   若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
  7. os.mkdir('dirname')         生成单级目录;相当于shellmkdir dirname
  8. os.rmdir('dirname')         删除单级空目录,若目录不为空则无法删除,报错;相当于shellrmdir dirname
  9. os.listdir('dirname')       列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
  10. os.remove()                 删除一个文件
  11. os.rename("oldname","new")  重命名文件/目录
  12. os.stat('path/filename')    获取文件/目录信息
  13. os.sep                      操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
  14. os.linesep                  当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
  15. os.pathsep                  用于分割文件路径的字符串
  16. os.name                     字符串指示当前使用平台。win->'nt'; Linux->'posix'
  17. os.system("bash command")   运行shell命令,直接显示
  18. os.environ                  获取系统环境变量
  19. os.path.abspath(path)       返回path规范化的绝对路径
  20. os.path.split(path)         path分割成目录和文件名二元组返回
  21. os.path.dirname(path)       返回path的目录。其实就是os.path.split(path)的第一个元素
  22. os.path.basename(path)      返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
  23. os.path.exists(path)        如果path存在,返回True;如果path不存在,返回False
  24. os.path.isabs(path)         如果path是绝对路径,返回True
  25. os.path.isfile(path)        如果path是一个存在的文件,返回True。否则返回False
  26. os.path.isdir(path)         如果path是一个存在的目录,则返回True。否则返回False
  27. os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
  28. os.path.getatime(path)      返回path所指向的文件或者目录的最后存取时间
  29. os.path.getmtime(path)      返回path所指向的文件或者目录的最后修改时间

2) sys模块

  Python运行时和解释器相关的部分

  1. sys.argv 命令行参数List,第一个元素是程序本身路径
  2. sys.exit(n) 退出程序,正常退出时exit(0)
  3. sys.version 获取Python解释程序的版本信息
  4. sys.maxint 最大的Int
  5. sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
  6. sys.platform 返回操作系统平台名称
  7. sys.stdin 输入相关
  8. sys.stdout 输出相关
  9. sys.stderror 错误相关

  进度条实例:

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sys,time
  5.  
  6. def f1(num,total):
  7. rate = float(num) / float(total)
  8. rate_num = int(rate * 100)
  9. result = '\r{}>{:>}%'.format('#'*num,rate_num)
  10.  
  11. sys.stdout.write(result)
  12.  
  13. if __name__ == '__main__':
  14. for i in range(0,100):
  15. time.sleep(0.1)
  16. f1(i,100)

3) hashlib模块

  用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

  

  1. import hashlib
  2.  
  3. # ######## md5 ########
  4. hash = hashlib.md5()
  5. # help(hash.update)
  6. hash.update(bytes('admin', encoding='utf-8'))
  7. print(hash.hexdigest())
  8. print(hash.digest())
  9.  
  10.  
  11. ######## sha1 ########
  12.  
  13. hash = hashlib.sha1()
  14. hash.update(bytes('admin', encoding='utf-8'))
  15. print(hash.hexdigest())
  16.  
  17. # ######## sha256 ########
  18.  
  19. hash = hashlib.sha256()
  20. hash.update(bytes('admin', encoding='utf-8'))
  21. print(hash.hexdigest())
  22.  
  23.  
  24. # ######## sha384 ########
  25.  
  26. hash = hashlib.sha384()
  27. hash.update(bytes('admin', encoding='utf-8'))
  28. print(hash.hexdigest())
  29.  
  30. # ######## sha512 ########
  31.  
  32. hash = hashlib.sha512()
  33. hash.update(bytes('admin', encoding='utf-8'))
  34. print(hash.hexdigest())

密码加盐

  1. import hashlib
  2. # ######## md5 ########
  3. hash = hashlib.md5(bytes('898oaFs09f',encoding="utf-8"))
  4. hash.update(bytes('admin',encoding="utf-8"))
  5. print(hash.hexdigest())

【Python自动化运维之路Day6】的更多相关文章

  1. python自动化运维之路~DAY6

    python自动化运维之路~DAY6 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  如果你想开发一款游戏,会存在角色的混搭的情况,这个时候“面向对象过程”就出现了,他能轻松的解决 ...

  2. python自动化运维之路~DAY5

    python自动化运维之路~DAY5 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.模块的分类 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数 ...

  3. 《Python自动化运维之路》 业务服务监控(二)

    文件内容差异对比方法 使用diffie模块实现文件内容差异对比.dmib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与 Linux下的di ...

  4. Python自动化运维之路-01

    python的主要应用 python的擅长领域 学python有没有前途?python的语言排名 语言选择 运维会了开发后可以干什么? python的最大优势就是什么都能做. 课程概述 毕业目标 周五 ...

  5. 【Python自动化运维之路Day9】Socket

    socket也可以认为是套接字是一种源IP地址和目的IP地址以及源端口号和目的端口号的组合.网络化的应用程序在开始任何通讯之前都必须要创建套接字.就像电话的插口一样,没有它就没办法通讯. socket ...

  6. 【Python自动化运维之路Day7】

    1. configparser模块 import configparser config = configparser.ConfigParser() #先把config应用一下configparser ...

  7. 【Python自动化运维之路Day4】

    abs()  取绝对值all()  所有为真,则为真,否则为假any()  至少有一个为真,就为真,否则为假callable()   判断函数是否可以被调用,如果可以返回True,否则返回False ...

  8. 【Python自动化运维之路Day2】

    1. 常量命名规则 在Python中,会在变量命名上标明某变量是常量,通常采用全是大写的方式来标明,如: CONNECT= '127.0.0.1' PORT = ' 2.Python编译 python ...

  9. 《Python自动化运维之路》 系统基础信息模块(一)

    系统性能收集模块Psutil 目录: 系统性能信息模块psutil 系统性能信息模块psutil psutil能够轻松实现获取系统运行的进程和系统利用率包括(CPU,内存,磁盘 和网络)等.主要用于系 ...

随机推荐

  1. SQLSERVER | 查询数据库中所有的表的名字 | 查询数据库中的所有数据库名

    SQLSERVER 1.查询某个数据库中所有的表名:  SELECT Name FROM SysObjects Where XType='U' ORDER BY Name 2.查询数据库中的所有数据库 ...

  2. JavaScript 对象 之创建对象 学习笔记

    假设我们有这样的一个需求:记录一个人的 名字和年龄,然后有个方法可以显示这个人的名字和年龄. 按照普通的方法,我们的代码应该是这样的: var person1 = new Object() , per ...

  3. 块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解

    CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inli ...

  4. 【kettle】window安装与配置

    1.下载kettle包,并解压http://community.pentaho.com/projects/data-integration/2.安装jdk,并配置java环境 a).打开我的电脑--属 ...

  5. 如何做一个avalon组件

    在avalon1.5中改用更直观的自定义标签来声明组件,废掉ms-widget,引入更强大的生命周期管理,可以让组件任意套嵌. 组件是由JS,HTML,CSS构成 JS 以AMD形式组织,引入HTML ...

  6. bootstrap分页插件--Bootstrap Paginator的使用&AJAX版备份(可单独使用)

    html部分: <ul class="pagination"></ul> <!--bootstrap3版本用ul包裹--> <div cl ...

  7. img外头包着a时底部出现的一小段高度的解决方法。图片水平垂直居中用css解决的方法。

    <a><img/></a> 这种结构有时候在界面预览的时候会出现一段多出来的高度.这个高度,一开始我很奇怪是什么原因产生的.鼠标移动到a标签上会有高度出现,一开始我 ...

  8. vertical-align 属性设置元素的垂直对齐方式。

     值 描述 baseline 默认.元素放置在父元素的基线上. sub 垂直对齐文本的下标. super 垂直对齐文本的上标 top 把元素的顶端与行中最高元素的顶端对齐 text-top 把元素的顶 ...

  9. 图表Echarts的使用

    Echarts是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表. 本文内容为讲解使用ECharts3.x版本绘制中国地图统计信息.   基本步骤: 1.下载ec ...

  10. hdu 5826 (物理) physics

    题目:这里 题意:光滑的水平直线上有n个质量相等的小球,已知每个小球的初始位置,初始速度和方向,每个小球的每个时刻的加速度a都满足a*v=c,v是该时刻的速度,c是已知的 常数,小球之间的碰撞是完全碰 ...