time:时间

  1. '''
    时间戳(timestamp):time.time()
    延迟线程的运行:time.sleep(secs)
    (指定时间戳下的)当前时区时间:time.localtime([secs])
    (指定时间戳下的)格林威治时间:time.gmtime([secs])
    (指定时间元组下的)格式化时间:time.strftime(fmt[,tupletime])
    '''
  1. '''
    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %m 月份(01-12)
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12)
    %M 分钟数(00=59)
    %S 秒(00-59)
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366)
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身
    '''

calendar:日历

  1. '''
    判断闰年:calendar.isleap(year)
    查看某年某月日历:calendar.month(year, mouth)
    查看某年某月起始星期与当月天数:calendar.monthrange(year, mouth)
    查看某年某月某日是星期几:calendar.weekday(year, month, day)
    '''

datatime:可以运算的时间

  1. '''
    当前时间:datetime.datetime.now()
    昨天:datetime.datetime.now() + datetime.timedelta(days=-1)
    修改时间:datatime_obj.replace([...])
    格式化时间戳:datetime.date.fromtimestamp(timestamp)
    '''

sys:系统

  1. '''
    命令行参数List,第一个元素是程序本身路径:sys.argv
    退出程序,正常退出时exit(0):sys.exit(n)
    获取Python解释程序的版本信息:sys.version
    最大int值:sys.maxsize | sys.maxint
    环境变量:sys.path
    操作系统平台名称:sys.platform
    '''

os:操作系统

  1. '''
    生成单级目录:os.mkdir('dirname')
    生成多层目录:os.makedirs('dirname1/.../dirnamen2')
    重命名:os.rename("oldname","newname")
    工作目录:os.getcwd()
    删除单层空目录:os.rmdir('dirname')
    移除多层空目录:os.removedirs('dirname1/.../dirnamen')
    列举目录下所有资源:os.listdir('dirname')
    路径分隔符:os.sep
    行终止符:os.linesep
    文件分隔符:os.pathsep
    操作系统名:os.name
    操作系统环境变量:os.environ
    执行shell脚本:os.system()
    '''

os.path:系统路径操作

  1. '''
    执行文件的当前路径:__file__
    返回path规范化的绝对路径:os.path.abspath(path)  
    将path分割成目录和文件名二元组返回:os.path.split(path)   #os.path.split('D:\admin.py') ==> ('D:\', 'admin.py')
    path分割成目录和文件后缀二元组返回:ps.path.splitext(path) #os.path.splitext('D:\admin.py') ==> ('D:\admin', '.py')
    上一级目录:os.path.dirname(path)
    最后一级名称:os.path.basename(path)
    指定路径是否存在:os.path.exists(path)
    是否是绝对路径:os.path.isabs(path)
    是否是文件:os.path.isfile(path)
    是否是路径:os.path.isdir(path)
    路径拼接:os.path.join(path1[, path2[, ...]])
    最后存取时间:os.path.getatime(path)
    最后修改时间:os.path.getmtime(path)
    目标大小:os.path.getsize(path)
    '''
  1. '''
    normcase函数
    在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
    >>> os.path.normcase('c:/windows\\system32\\')  
    'c:\\windows\\system32\\'  
     
    normpath函数
    规范化路径,如..和/
    >>> os.path.normpath('c://windows\\System32\\../Temp/')  
    'c:\\windows\\Temp'  

    >>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..'
    >>> print(os.path.normpath(a))
    /Users/jieli/test1
    '''

random:随机数

  1. '''
    (0, 1):random.random()
    [1, 10]:random.randint(1, 10)
    [1, 10):random.randrange(1, 10)
    (1, 10):random.uniform(1, 10)
    单例集合随机选择1个:random.choice(item)
    单例集合随机选择1个,并已列表的形式返回: random.choice(item)
    单例集合随机选择n个:random.sample(item, n)
    洗牌单列集合:random.shuffle(item)
    '''

json:序列化

  1. # json: {} 与 [] 嵌套的数据
    # 注:json中的字符串必须全部用""来标识
    '''
    序列化:对象 => 字符串
    序列化成字符串:json.dumps(json_obj)
    序列化字符串到文件中:json.dump(json_obj, write_file)

    # 注:字符形式操作
    反序列化成对象:json.loads(json_str)
    从文件读流中反序列化成对象:json.load(read_file)
    '''
  1. # xml | json
  1. import json
    # json.dumps() json.dump()
    # json.loads() json.loads()
  2.  
  3. # json:json就是一种特殊格式的字符串
    # 格式要求:
    # 1.只能由{}和[]嵌套形成
    # 2.只能有一个根: 最外层要么是{}(推荐),要么是[]
    # 3.所以key都是字符串类型,且json字符串中所有字符串类型必须用""包裹
    # 4.json字符串中value类型可以为: number | boolean | null | 字符串 | dic | list
    dic = {'': [1, 3.14, True, None, "字符串"]}
    print(json.dumps(dic))
  4.  
  5. j_str = """{"key": [1, 3.14, true, null, "字符串"]}"""
    print(json.loads(j_str))
  6.  
  7. '''
    {
    "info": [1, 2, 3, 4, 5]
    }
    '''
  8.  
  9. # xml格式数据:
    # 1.xml文件中都是由自定义标签嵌套形成,区分大小写
    # 2.只能有一个根标签:其他内容或标签都被该标签包裹
    # 3.标签名为key,标签中的值为value
    # 4.与json不同的是,xml标签可以额外添加属性来标识key的区分度
  1.  

pickle:序列化

  1. '''
    #pickle是操作二进制的
    序列化:对象 => 字符串
    序列化成字符串:pickle.dumps(obj)
    序列化字符串到文件中:pickle.dump(obj, write_bytes_file)

    # 注:字节形式操作
    反序列化成对象:pickle.loads(bytes_str)
    从文件读流中反序列化成对象:pickle.load(read_bytes_file)
    '''
  2.  

random:随机数

  1. '''
    (0, 1) 小数:random.random()
    [1, 10] 整数:random.randint(1, 10)
    [1, 10) 整数:random.randrange(1, 10)
    (1, 10) 小数:random.uniform(1, 10)
    单例集合随机选择1个:random.choice(item)
    单例集合随机选择n个:random.sample(item, n)
    洗牌单列集合:random.shuffle(item)
    '''
  1. # 产生指定位数的验证码
    import random
    def random_code(count):
       code = ''
       for i in range(count):
           num = random.randint(1, 3)
           if num == 1:
               tag = str(random.randint(0, 9))
           elif num == 2:
               tag = chr(random.randint(65, 90))
           else:
               tag = chr(random.randint(97, 122))
           code += tag
       return code
    print(random_code(6))

  

shutil:可以操作权限的处理文件模块

  1. # 基于路径的文件复制:
    shutil.copyfile('source_file', 'target_file')

    # 基于流的文件复制:
    with open('source_file', 'rb') as r, open('target_file', 'wb') as w:
       shutil.copyfileobj(r, w)
       
    # 递归删除目标目录
    shutil.rmtree('target_folder')

    # 文件移动
    shutil.remove('old_file', 'new_file')

    # 文件夹压缩
    shutil.make_archive('file_name', 'format', 'archive_path')

    # 文件夹解压
    shutil.unpack_archive('unpack_file', 'unpack_name', 'format')

shevle:可以用字典存取数据到文件的序列化模块

  1. # 将序列化文件操作dump与load进行封装
    s_dic = shelve.open("target_file", writeback=True)  # 注:writeback允许序列化的可变类型,可以直接修改值
    # 序列化::存
    s_dic['key1'] = 'value1'
    s_dic['key2'] = 'value2'
    # 反序列化:取
    print(s_dic['key1'])
    # 文件这样的释放
    s_dic.close()

三流:标准输入输出错误流

  1. import sys
    sys.stdout.write('msg')
    sys.stderr.write('msg')
    msg = sys.stdin.readline()

    # print默认是对sys.stdout.write('msg') + sys.stdout.write('\n')的封装
    # 格式化结束符print:print('msg', end='')

logging:日志模块

  1. '''
    1) root logging的基本使用:五个级别
    2)root logging的基本配置:logging.basicConfig()
    3)logging模块四个核心:Logger | Filter | Handler | Formater
    4)logging模块的配置与使用
    -- 配置文件:LOGGING_DIC = {}
    -- 加载配置文件:logging.config.dictConfig(LOGGING_DIC) => logging.getLogger('log_name')
    '''

logging各角色的使用(了解)

  1. # 生成器
    logger1 = logging.getLogger("日志对象1")

    # 文件句柄
    handler1 = logging.FileHandler("log1.log",encoding="utf-8")
    handler2 = logging.FileHandler("log2.log",encoding="utf-8")

    # 控制台句柄
    handler3 = logging.StreamHandler()


    # 格式化对象
    fmt1 = logging.Formatter(
       fmt="%(asctime)s - %(name)s - %(levelname)s: %(message)s",
       datefmt="%m-%d %H:%M:%S %p")
    fmt2 = logging.Formatter(
       fmt="%(asctime)s - %(levelname)s : %(message)s",
       datefmt="%Y/%m/%d %H:%M:%S")

    # 绑定格式化对象与文件句柄
    handler1.setFormatter(fmt1)
    handler2.setFormatter(fmt2)
    handler3.setFormatter(fmt1)

    # 绑定生成器与文件句柄
    logger1.addHandler(handler1)
    logger1.addHandler(handler2)
    logger1.addHandler(handler3)

    # 设置日志级别
    logger1.setLevel(10)    #生成器日志级别
    handler1.setLevel(20)   #句柄日志级别

    # 测试
    logger1.debug("debug msessage")
    logger1.info("info msessage")
    logger1.warning("warning msessage")
    logger1.critical("critical msessage")

到此我们已经可以实现上述的需求了,但是这并不是我们最终的实现方式,因为每次都要编写这样的代码是非常痛苦的

logging的继承(了解)

可以将一个日志指定为另一个日志的子日志 或子孙日志

当存在继承关系时 子孙级日志收到日志时会将该日志向上传递

指定继承关系:

  1. import  logging

    log1 = logging.getLogger("mother")
    log2 = logging.getLogger("mother.son")
    log3 = logging.getLogger("mother.son.grandson")

    # handler
    fh = logging.FileHandler(filename="cc.log",encoding="utf-8")
    # formatter
    fm = logging.Formatter("%(asctime)s - %(name)s -%(filename)s - %(message)s")

    # 绑定
    log1.addHandler(fh)
    log2.addHandler(fh)
    log3.addHandler(fh)
    # 绑定格式
    fh.setFormatter(fm)
    # 测试
    # log1.error("测试")
    # log2.error("测试")
    log3.error("测试")
    # 取消传递
    log3.propagate = False
    # 再次测试
    log3.error("测试")

XML:xml文件操作模块

  1. '''
    1)解析xml文件:了解
    2)操作xml文件:了了解
    '''

re:正则模块(重点)

  1. '''
    1)模块的基本使用
    2)正则的语法
    3)分组:() | (?:) | (?P<name>)
    4)正则的使用方法
    '''

day 17-18 常用模块的更多相关文章

  1. 十八. Python基础(18)常用模块

    十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...

  2. 18 常用模块 random shutil shevle logging sys.stdin/out/err

    random:随机数 (0, 1) 小数:random.random() ***[1, 10] 整数:random.randint(1, 10) *****[1, 10) 整数:random.rand ...

  3. day16_7.18 常用模块

    一.collections collections模块中提供了除了dict,list,str等数据类型之外的其他数据类型:Counter.deque.defaultdict.namedtuple和Or ...

  4. Day 18 常用模块(二)

    一.随机数:RANDOM 1.(0,1)小数:random.random() 2.[1,10]整数:random.randint(1,10) 3.[1,10)整数:random.randrang(1, ...

  5. 进击的Python【第五章】:Python的高级应用(二)常用模块

    Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...

  6. Python模块之常用模块,反射以及正则表达式

    常用模块  1. OS模块 用于提供系统级别的操作,系统目录,文件,路径,环境变量等 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("di ...

  7. python学习笔记之常用模块(第五天)

    参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...

  8. Python 之路 Day5 - 常用模块学习

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  9. day--6_python常用模块

    常用模块: time和datetime shutil模块 radom string shelve模块 xml处理 configparser处理 hashlib subprocess logging模块 ...

  10. Tengine 常用模块使用介绍

    Tengine 和 Nginx Tengine简介 从2011年12月开始:Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能 和特性. ...

随机推荐

  1. SpringBoot修改Redis序列化方式

    前言 由于Springboot默认提供了序列化方式并不是非常理想,对于高要求的情况下,序列化的速度和序列化之后大小有要求的情况下,不能满足,所以可能需要更换序列化的方式. 这里主要记录更换序列化的方式 ...

  2. Linux - CentOS 登陆密码找回解决方法

  3. ES6躬行记(13)——类型化数组

    类型化数组(Typed Array)是一种处理二进制数据的特殊数组,它可像C语言那样直接操纵字节,不过得先用ArrayBuffer对象创建数组缓冲区(Array Buffer),再映射到指定格式的视图 ...

  4. Oracle学习笔记四

    一.PL/SQL编程 游标(光标Cursor) 为什么使用游标 在写java程序中有集合的概念,那么在pl/sq中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据. 语法: C ...

  5. JDK源码分析(三)—— LinkedList

    参考文档 JDK源码分析(4)之 LinkedList 相关

  6. [Go] golang的range循环遍历通道

    range循环会无限在channels上面迭代 package main import ( "fmt" "time" ) func main() { //创建一 ...

  7. 谈谈Mysql主从同步延迟分析及解决方案

    一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 lo ...

  8. Node.js面试题之2017

    译者按: 从ECMAScript标准,Node.js语法以及NPM模块角度来看,Node.js的发展让人目不暇接,那么面试题也得与时俱进. 原文: Node.js Interview Question ...

  9. 流程控制值while 循环

    一.结束循环的两种方式 1. 修改条件tag=Truewhile tag: print(1) print(2) print(3) tag=False print(4) 2.while + break ...

  10. jQuery each和js forEach用法比较

    本文实例分析了jQuery each和js forEach用法.分享给大家供大家参考,具体如下: 对于遍历数组的元素,js代码和jquery都有类似的方法,js用的是forEach而jquery用的是 ...