zoukankan      html  css  js  c++  java
  • python基础 day21 re模块及shutil、logging模块

    一、默写

    re模块的常用方法:

    findall: 返回列表

    search:返回一个变量,只能.group()获取第一个匹配项

    sub:替换对应正则表达式的第一个匹配项

    subn:替换对应正则表达式的所有匹配项,并且返回替换次数

    compile:对需要公用正则表达式,节约时间

    finditer:节约空间,并且取值是通过.group()获取结果

    split:通过正则匹配到的字符串进行分割,并且可以返回分割的具体内容

    import re
    ret = re.compile('d')
    res = ret.finditer('fhajdfd123123kddhdfkaj')
    print(res.group()) #默认取第一个
    可以给正则内需要的值命名:
    <h1>fhdjka</h1>
    '<?P<tag>(.*?)>.*</?P=tag>'
    取消分组优先: ?:来取消分组优先

    import re
    s = '<h1>wahahfadjdklala</h1><h2>wahahfadjdklala</h2>'
    ret = re.search(r'<(?P<name>w+)>(?P<info>.*?)</(?P=name)>',s)
    print(ret.group('info'))

    二、今日内容

    • shuti模块

      • 拷贝文件

        shutil.copy2("原文件","目标文件")

         

      • 拷贝目录

        shutilcopy("源文件","目标文件")

         

      • 删除目录

      • 移动文件、目录

      • 压缩文件

      • 获取磁盘空间

      • 解压文件-

    • log模块

      • log是为了排错

      • log用来做数据分析

     

    logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:

    filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
    filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
    format:指定handler使用的日志显示格式。
    datefmt:指定日期时间格式。
    level:设置rootlogger(后边会讲解具体概念)的日志级别
    stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。

    format参数中可能用到的格式化串:
    %(name)s Logger的名字
    %(levelno)s 数字形式的日志级别
    %(levelname)s 文本形式的日志级别
    %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
    %(filename)s 调用日志输出函数的模块的文件名
    %(module)s 调用日志输出函数的模块名
    %(funcName)s 调用日志输出函数的函数名
    %(lineno)d 调用日志输出函数的语句所在的代码行
    %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
    %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
    %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    %(thread)d 线程ID。可能没有
    %(threadName)s 线程名。可能没有
    %(process)d 进程ID。可能没有
    %(message)s用户输出的消息

    • 日志的切割

    import logging

    file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
    logging.basicConfig(
       format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
       datefmt='%Y-%m-%d %H:%M:%S %p',
       handlers=[file_handler,],
       level=logging.ERROR
    )

    logging.error('你好')

     

    #最常用的记录日志内容
    import time
    import logging
    from logging import handlers
    
    sh = logging.StreamHandler()
    rh = handlers.RotatingFileHandler('myapp.log', maxBytes=1024,backupCount=5)
    fh = handlers.TimedRotatingFileHandler(filename='x2.log', when='s', interval=5, encoding='utf-8')
    logging.basicConfig(
        format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S %p',
        handlers=[fh,sh,rh],
        level=logging.ERROR
    )
    
    for i in range(1,100000):
        time.sleep(1)
        logging.error('KeyboardInterrupt error %s'%str(i))
    
  • 相关阅读:
    上市前为什么要分红
    在文件开始追加一行
    c++ 日期时间工具
    windows c++找不到time.h sys/types.h
    截取ls -l的某一列
    提取指定类型文件到指定目录,保留目录结构
    批量转换当前目录下的文件名为snake case
    vcpkg boost uuid Bcrypt 链接问题
    文件名pascal转underscore
    vcpkg cmake 找不到boost
  • 原文地址:https://www.cnblogs.com/iaoyuyuyuhuanghuang/p/14242462.html
Copyright © 2011-2022 走看看